Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como testar em e entre cada uma das várias tabelas?


Bem, Leonid está certo, junções de mesa é o que você precisa. "Uma cláusula SQL JOIN é usada para combinar linhas de duas ou mais tabelas, com base em um campo comum entre elas." - http://www.w3schools.com/sql/sql_join.asp Simples assim. Você diz que para a tabela A e a tabela B esse campo comum é o ShopLot e para as tabelas B e C é o ContainerRef que corresponde ao ContainerID.

Vamos fazer isso passo a passo.

Então primeiro vamos selecionar as colunas das tabelas que queremos mostrar
 SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID

Você vê que há apenas um ShopLot e o ContainerRef que é porque esse é um campo comum como dissemos antes e não há necessidade de mostrar a mesma data duas vezes em uma linha.

O próximo passo seria ver de onde nós SELECIONAMOS essas colunas. Nesta etapa, combinamos linhas dessas tabelas separadas e basicamente criamos uma tabela com todas essas colunas da instrução select. Isso vai ficar assim
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

O que aconteceu aqui. Primeiro dissemos SELECT(alguma coisa) FROM Table_A e (inner) join ela com Table_B... E a resposta está nos campos Table_A.ShopLot e Table_B.ShopLot. Pegue uma linha da Tabela_A, veja o valor do campo ShopLot e encontre todas as linhas com esse valor (se houver) na Tabela_B e junte-as. Table_C é unido da mesma forma que apenas o nome dos campos é alterado.

Então o terceiro passo é fazer a cláusula WHERE. Esta é provavelmente a parte mais fácil porque agora temos uma tabela grande e só precisamos dizer o que precisamos
WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

E é isso. Tentei simplificar ao máximo. Aposto que há muita explicação de banhista online só precisa fazer uma pequena pesquisa ...

Aqui está um código completo:
SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Espero que isso ajude um pouco, não é complicado como é olhar de primeira. Seria melhor se o exemplo fosse com duas mesas, mas é o que é. GL