sql >> Databáze >  >> RDS >> Mysql

Jak testovat v každé z několika tabulek a mezi nimi?

Leonid má pravdu, připojení ke stolu je to, co potřebujete. "Klauzule SQL JOIN se používá ke spojení řádků ze dvou nebo více tabulek na základě společného pole mezi nimi." – http://www.w3schools.com/sql/sql_join.asp takhle jednoduché. Pro tabulku A a tabulku B říkáte, že společné pole je ShopLot a pro tabulky B a C je ContainerRef odpovídající ContainerID.

Pojďme to udělat krok za krokem.

Nejprve tedy vyberte sloupce z tabulek, které chceme zobrazit

 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

Vidíte, že existuje pouze jeden ShopLot a ContainerRef, protože to je společné pole, jak jsme řekli dříve, a není potřeba ukazovat stejné datum dvakrát v jednom řádku.

Dalším krokem by bylo zjistit, odkud vybereme tyto sloupce. V tomto kroku zkombinujeme řádky z těchto samostatných tabulek a v podstatě vytvoříme jednu tabulku se všemi těmito sloupci z příkazu select. Bude to vypadat takto

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

Co se tady stalo. Nejprve jsme řekli SELECT(něco) FROM Table_A a (vnitřní) ji spojte s Table_B... Pak je tu otázka, jak spojit tyto dvě tabulky (na základě čeho?)? A odpověď je NA polích Table_A.ShopLot a Table_B.ShopLot. Vezměte řádek z tabulky_A, podívejte se na hodnotu pole ShopLot a najděte všechny řádky s touto hodnotou (pokud existují) v tabulce_B a spojte je. Tabulka_C se připojuje stejným způsobem, jako se mění pouze názvy polí.

Třetím krokem je vytvoření klauzule WHERE. To je pravděpodobně nejjednodušší část, protože nyní máme jeden velký stůl a stačí si říct, co potřebujeme

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

A to je vše. Snažil jsem se to zjednodušit, jak jsem mohl. Vsadím se, že na internetu je mnoho vysvětlení pro koupající se, stačí jen trochu hledat...

Zde je úplný kód:

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'

Doufám, že to trochu pomůže, není to složité, jak to na první pohled vypadá. Bylo by lepší, kdyby byl příklad se dvěma tabulkami, ale je to tak. GL



  1. změnit stav plánovače událostí v mysql

  2. Zpracování velmi velkých dat pomocí mysql

  3. Jak nastavit <option selected=selected> pomocí MySQL a PHP?

  4. Skriptujte celou databázi SQL-Server