Arquivo

Archive for the ‘Mentes Brilhantes’ Category

Série Mentes Brilhantes – Parte 17

6 de agosto de 2012 1 comentário

O que fazer quando você quer dar uma impressão inicial de que MUITAS linhas serão retornadas, e de repente…

Haha pegadinha do malandro! Just kidding Isso não é um produto cartesiano…

 

SELECT  Orders.OrderID,
Orders.CustomerID,
Orders.OrderDate,
Customers.CompanyName,
Employees.Title
FROM Orders
CROSS JOIN Customers
LEFT OUTER JOIN Employees
ON Orders.EmployeeID = Employees.EmployeeID
INNER JOIN Shippers
ON Shippers.ShipperID = Orders.ShipVia
AND Orders.CustomerID = Customers.CustomerID

Obs.: Fiz uma pequena alteração para deixar o código ainda mais tenso…rs…

O original é um código que meu irmão Marcos Paulo me mandou, ele pegou essa belezinha sendo gerado pelo LINQ.

SELECT  Orders.OrderID,
Orders.CustomerID,
Orders.OrderDate,
Customers.CompanyName
FROM Orders
CROSS JOIN Customers
WHERE Orders.CustomerID = Customers.CustomerID

Quer contribuir para essa série e fazer a felicidade de muitos? Me manda sua belezura para fabiano at amorim arroba (que não é do boi) dominio do bol ponto com ponto br

Abs.

Categorias:Mentes Brilhantes

Série Mentes Brilhantes – Parte 16

24 de julho de 2012 4 comentários

Pois é galera, para nossa felicidade a famosa série mentes brilhantes vai voltar… Open-mouthed smile

A série mente brilantes é baseada em códigos que um amigo de um primo do meu cunhado  viu por ai e me contou. Just kidding

Pra quem ainda não viu segue o link com os outros 15 itens da série: https://blogfabiano.com/category/mentes-brilhantes/

Espero que se divirtam!

A de hoje é:

O que fazer quando você quer que sua rotina só rode depois da meia noite prevendo mudança de fuso-horário?

Fácil faça uma validação com IF…

DECLARE @Dt DateTime = GetDate()

IF DATEPART(hour, @Dt) >= 24
BEGIN
  PRINT 'Entrou no IF'
END

Sarcastic smile

Categorias:Mentes Brilhantes

Série Mentes Brilhantes – Parte 15

24 de agosto de 2011 1 comentário

O que fazer quando você não confia na clausula IF?

Simples, replique o código no ELSE IF.

Isso me lembra de uma frase que um amigo sempre fala: –“Se não vai no IF vai no ELSE.” (Brilhante)

DECLARE @Error   Int,

@Message VarChar(200)

SET @Error = 1

IF @Error <> 0

BEGIN

SET @Message = dbo.ReturnError(‘InsertingError1’,@Error)

SELECT @Message AS Error

END

ELSE IF @Error <> 0

BEGIN

SELECT dbo.ReturnError(‘InsertingError1’,@Error) AS Error

END

Série Mentes Brilhantes – Parte 14

24 de junho de 2010 3 comentários

O que fazer quando você odeia a clausula WHERE ?

 

Simples, basta usar o filtro no INNER JOIN usando a clausula EXISTS

 

SELECT Tab1.Col1,

       Tab1.Col2,

       Tab2.Nome

  FROM Tab1

 INNERJOIN Tab2

    ON Tab1.ID = Tab2.ID

   ANDEXISTS(SELECT 1

               WHERE Tab1.Col1 = 64

                 AND Tab1.Col2 > 10)

Série Mentes Brilhantes – Parte 13

24 de maio de 2010 1 comentário

O que fazer quando você gosta muito de usar a clausula IN?

 

Use-a, independente da quantidade de itens

SELECT*FROM Clientes

WHERE ID_Cliente IN(1,

                     2,

                     3,

                     4,

                     5,

                     16,

                     17,

                     18,

                     19,

                     20,

                     21,

                     22,

                     23,

                     24,

                     25,

                     26,

                     27,

                     28,

                     29,

                     30,

                     31,

                     32,

                     33,

                     34,

                     35,

                     36,

                     37,

                     38,

                     39,

                     40,

                     41,

                     42,

                     43,

                     44,

                     45,

                     46,

                     47,

                     48,

                     49,

                     50,

                     51,

                     52,

                     53,

                     54,

                     55,

                     56,

                     57,

                     58,

                     59,

                     60,

                     61,

                     62,

                     63,

                     64,

                     65,

                     66,

                     67,

                     68,

                     69,

                     70,

                     71,

                     72,

                     73,

                     74,

                     75,

                     76,

                     77,

                     78,

                     79,

                     80,

                     81,

                     82,

                     83,

                     84,

                     85,

                     86,

                     87,

                    88,

                     89,

                     90,

                     91,

                     92,

                     93,

                     94,

                     95,

                     96,

                     97,

                     98,

                     99,

                     100,

                     101,

                     102,

                     103,

                     104,

                    105,

                     106,

                     107,

                     108,

                     109,

                     110,

                     111,

                     112,

                     113,

                     114,

                     115,

                     116,

                     117,

                     118,

                     119,

                     120,

                     121,

                     122,

                     123,

                     124,

                     125,

                     126,

                     127,

                     128,

                     129,

                     130,

                     131,

                     132,

                     133,

                     134,

                     135,

                     136,

                     137,

                     138,

                     139,

                     140,

                     141,

                     142,

                     143,

                     144,

                     145,

                     146,

                     147,

                     148,

                     149,

                     150)

 

Série Mentes Brilhantes – Parte 12

20 de maio de 2010 2 comentários

 

O que fazer quando você quer dar um ar mais profissional para seus Inserts?

 

Use um cursor para inserir os dados linha a linha

DECLARE tmp_Cursor CURSORSTATICREAD_ONLYLOCAL

FORSELECT Col1,

           Col2,

           Col3,

           Col4,

           Col5,

           Col6,

           Col7,

           Col8

      FROM dbo.fn_RetornaDados(@Col9,

                                @Col10,

                                @Col11,

                                @Col12)

 

OPEN tmp_Cursor;

 

FETCHNEXTFROM tmp_Cursor

INTO @Col1,

     @Col2,

     @Col3,

     @Col4,

     @Col5,

     @Col6,

     @Col7,

     @Col8;

 

WHILE@@FETCH_STATUS= 0

BEGIN

  INSERTINTO Tabela(Col1,

                      Col2,

                      Col3,

                      Col4,

                      Col5,

                      Col6,

                      Col7,

                      Col8)

  VALUES (@Col1,

          @Col2,

          @Col3,

          @Col4,

          @Col5,

          @Col6,

          @Col7,

          @Col8)

 

  FETCHNEXTFROM tmp_Cursor

  INTO @Col1,

       @Col2,

       @Col3,

       @Col4,

       @Col5,

       @Col6,

       @Col7,

       @Col8;

END

 

CLOSE tmp_Cursor;

DEALLOCATE tmp_Cursor;

 

Série Mentes Brilhantes – Parte 11

19 de maio de 2010 2 comentários

O que fazer quando você gosta muito de fazer selects?

Faça um select para ler cada coluna, desta forma você consegue deixar o código mais completo.

 

SELECT @ID_E = ID_E

  FROM Tab1

INNER JOIN Tab2

    ON Tab1.ID_Grupo = Tab2.ID_Grupo

WHERE Tab2.ID_Ass = 1; 

SELECT @DT   = DT,

       @HR   = HR,

       @MN   = MN,

       @ID_G = ID

  FROM Tab2

WHERE ID_Ass = 1;

 

SELECT @ID_A = ID_A

FROM Tab1

WHERE ID_G = 1;

Série Mentes Brilhantes – Parte 10

18 de maio de 2010 1 comentário

O que fazer quando você deseja apagar registro somente se ele existir na tabela?

 

Verifique se ele existe antes de apagar

IFEXISTS(SELECT 1 FROM Clientes WHERE ID_Cliente = @ID)

BEGIN

  DELETEFROM Clientes WHERE ID_Cliente = @ID

END

Série Mentes Brilhantes – Parte 9

17 de maio de 2010 1 comentário

O que fazer quando você odeia like?

 

Não use o like, crie sus próprios meios para filtrar os dados

SELECT*FROM Pedido

WHERESubString(Vendedor,1,2)=‘Fa’

Série Mentes Brilhantes – Parte 8

13 de maio de 2010 1 comentário

O que fazer quando você odeia fazer joins?

 

Crie SubQuerys para retornar os dados das colunas.

SELECT ID_Pedido,

       Valor,

      (SELECT Nome     FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS NomeCliente,

      (SELECT Endereco FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS EnderecoCliente,

      (SELECT Bairro   FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS BairroCliente,

      (SELECT Cidade   FROM Clientes WHERE Clientes.ID_Cliente = Pedidos.ID_Cliente)AS CidadeCliente

FROM Pedidos

WHERE ID_Cliente = 10