Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да тествате във и между всяка от няколко таблици?

Е, Леонид е дясно, съединяването на масата е това, от което се нуждаете. „Клауза SQL JOIN се използва за комбиниране на редове от две или повече таблици въз основа на общо поле между тях.“ - http://www.w3schools.com/sql/sql_join.asp просто като това. Вие казвате за таблица A и таблица B, че общото поле е ShopLot, а за таблица B и C е ContainerRef, съответстващ на ContainerID.

Нека го направим стъпка по стъпка.

Така че първо нека изберете колони от таблиците, които искаме да покажем

 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

Виждате, че има само един ShopLot и ContainerRef, защото това е общо поле, както казахме преди, и няма нужда да се показва една и съща дата два пъти на един ред.

Следващата стъпка би била да видим откъде ИЗБРАМЕ тези колони. В тази стъпка комбинираме редове от тази отделна таблица и основно създаваме една таблица с всички тези колони от оператора select. Това ще изглежда така

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

Какво се случи тук. Първо казахме SELECT(нещо) ОТ Table_A и (вътрешно) я присъединете към Table_B... Тогава има въпрос как да се присъединят тези две таблица (въз основа на какво?)? И отговорът е НА полетата Table_A.ShopLot и Table_B.ShopLot. Вземете ред от Table_A, вижте стойността на полето ShopLot и намерете всички редове с тази стойност (ако има) в Table_B и ги присъединете. Table_C се присъединява по същия начин, по който се променя само името на полетата.

След това третата стъпка е да направите клауза WHERE. Това е може би най-лесната част, защото сега имаме една голяма маса и просто трябва да кажем какво ни трябва

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

И това е. Опитах се да го направя възможно най-просто. Обзалагам се, че онлайн има много обяснения за къпещите се, просто трябва да потърсите малко...

Ето пълен код:

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'

Надявам се това да помогне малко, не е сложно, както изглежда на пръв поглед. Би било по-добре, ако примерът е с две маси, но е това, което е. GL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо PostgreSQL е толкова бавен в Windows?

  2. MySQL/MariaDB:създайте изглед на центрирана таблица

  3. Как да създадете MySQL заявка, за да намерите свързани публикации от множество таблици?

  4. Посочване на парола в MySQL низ за връзка

  5. Как да получа втори последен ред от база данни на mysql?