quarta-feira, 8 de outubro de 2014

Emuladores

Será citado algumas características dos emuladores existente para as diversas plataformas de consoles e arcades.


Emuladores de consoles:

Nintendo - NES, SNES, GB, GBA, N64, GC, NDS.

Sony - PSOne(Playstation), PS2, PSP.

Sega - Master System, Mega Drive, Sega Saturn, Dreamcast

NeoGeo - NeoGeo CD, Neo Geo Pocket

Microsoft - XBOX

Emuladores de Arcade:

MAME
NeoRageX
Final Burn
Kawaks
Nebula
Callus
CPS3
Raine

Informações sobre as características dos emuladores serão adicionadas em breve.

segunda-feira, 19 de março de 2012

Diferenças entre LEFT, INNER e RIGHT JOIN

Tema: Banco de Dados
Nível: 2
Pre-requisitos: Noções básicas de SQL (SELECTFROM E JOIN)

De forma direta, JOIN é usado para cruzar informações entre as tabela de um banco de dados.

Uma dúvida comum gerada pelos iniciantes do SQL é saber a diferença entre LEFT JOIN, INNER JOIN e RIGHT JOIN. Então vamos tirar essa dúvida da maneira mais prática e clara possível.

Para isso vamos precisar de dados, ou seja, tabelas, e neste caso estas 2 serão um bom exemplo:




LEFT JOIN

SELECT HOMEM.NOME_HOMEM, MULHER.NOME_MULHER
FROM HOMEM LEFT JOIN MULHER
ON HOMEM.COD_CASAMENTO = MULHER.COD_CASAMENTO

Resultaria em:

Como podemos ver a consulta retorna todos os homens, casados ou não, e somente as mulheres que são casadas. O  LEFT JOIN retorna todos os registros da tabela a esquerda do  JOIN, neste caso a Tabela Homem, independente da ligação na cláusula  ON. Por isso Maria não apareceu.


INNER JOIN

SELECT HOMEM.NOME_ HOMEM, MULHER.NOME_HOMEM
FROM HOMEM INNER JOIN MULHER
ON HOMEM.COD_MARIDO = MULHER.COD_MARIDO

Resultaria em:

INNER JOIN (ou apenas JOIN) é o caso mais comum de usarmos, pois ele junta todos os registros da tabela esquerda e direta que satifazem a cláusula  ON.
Como podemos ver Sebastião e Allan ficaram fora desta vez, pois não possuem um COD_CASAMENTO que forme um par com algum registro da Tabela Mulher, assim tambem como Maria.


RIGHT JOIN

SELECT HOMEM.NOME_ HOMEM, MULHER.NOME_MULHER
FROM HOMEM RIGHT JOIN MULHER
ON HOMEM .COD_MARIDO = MULHER.COD_MARIDO

Resultaria em:

Ao contrário do LEFT JOIN, o RIGHT JOIN  retorna todos os elementos da tabela a direita do  JOIN, neste caso, retorna todas as mulheres, casadas ou não (Maria esta aparecendo agora), e somente os homens casados. Desta fez Sebastião e Allan ficaram de fora.

Bom pessoal, é isso por enquanto.
Espero ter tirado esse dúvida que assola a maioria dos iniciantes de SQL.
Qualquer dúvida, estou a disposição.

Um abraço. Ate a próxima.

Bônus:

--QUERY USADA (Para estudo)

--DELETA AS TABELAS TEMPORÁRIAS CASO EXISTAM
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE NAME LIKE '#Cliente%')
      DROP TABLE #Cliente
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE NAME LIKE '#Venda%')
      DROP TABLE #Venda
IF EXISTS(SELECT * FROM TEMPDB..SYSOBJECTS WHERE NAME LIKE '#Produto%')
      DROP TABLE #Produto

--TABELA TEMPORARIO #CLIENTE
SELECT *
INTO #Cliente
FROM
(SELECT 1 AS Cod_Cliente, 'Renato' AS Nome_Cliente
UNION ALL
SELECT 2 AS Cod_Cliente, 'Ana' AS Nome_Cliente
UNION ALL
SELECT 3 AS Cod_Cliente, 'Carlos' AS Nome_Cliente
UNION ALL
SELECT 4 AS Cod_Cliente, 'Julia' AS Nome_Cliente
UNION ALL
SELECT 5 AS Cod_Cliente, 'Rafael' AS Nome_Cliente
UNION ALL
SELECT 6 AS Cod_Cliente, 'Carla' AS Nome_Cliente
) AS Cliente

--TABELA TEMPORARIO #VENDA
SELECT *
INTO #Venda
FROM
(SELECT 1 AS Cod_Cliente, 1 AS Cod_Produto, 2 AS Quantidade
UNION ALL
SELECT 1 AS Cod_Cliente, 2 AS Cod_Produto, 2 AS Quantidade
) AS VENDA 

--TABELA TEMPORARIO #PRODUTO
SELECT *
INTO #Produto
FROM 
(SELECT 1 AS Cod_Produto, 'Arroz' AS Nome_Produto, 12.00 AS Preco
UNION ALL
SELECT 1 AS Cod_Produto, 'Feijão' AS Nome_Produto, 8.00 AS Preco
UNION ALL
SELECT 1 AS Cod_Produto, 'Macarrão' AS Nome_Produto, 6.00 AS Preco
UNION ALL
SELECT 1 AS Cod_Produto, 'Biscoito' AS Nome_Produto, 1.50 AS Preco
UNION ALL
SELECT 1 AS Cod_Produto, 'Leite' AS Nome_Produto, 2.00 AS Preco
) AS Produto