sql >> Databasteknik >  >> RDS >> Mysql

Hur testar man i och mellan var och en av flera tabeller?

Jo Leonid har rätt bordskarvar är vad du behöver. "En SQL JOIN-sats används för att kombinera rader från två eller flera tabeller, baserat på ett gemensamt fält mellan dem." - http://www.w3schools.com/sql/sql_join.asp enkelt som det. Du säger för tabell A och tabell B att det gemensamma fältet är ShopLot och för tabell B och C är ContainerRef matchar ContainerID.

Låt oss göra det steg för steg.

Så låter vi först välja kolumner från tabellerna vi vill visa

 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

Du ser att det bara finns en ShopLot och ContainerRef som beror på att det är vanligt fält som vi sa tidigare och det finns ingen anledning att visa samma datum två gånger på en rad.

Nästa steg skulle vara att se varifrån vi VÄLJER denna kolumn. I det här steget kombinerar vi rader från denna separata tabell och skapar i princip en tabell med alla dessa kolumner från select-satsen. Det kommer att se ut så här

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

Vad har hänt här. Först sa vi SELECT(något) FROM Table_A och (inre) gå med henne med Table_B... Sedan är det en fråga hur man sammanfogar denna två tabell (baserat på vad?)? Och svaret är PÅ fälten Table_A.ShopLot och Table_B.ShopLot. Ta en rad från Table_A, se värdet på ShopLot-fältet och hitta alla rader med det värdet (om det finns) i Table_B och slå samman dem. Tabell_C sammanfogas på samma sätt som bara namnet på fälten ändras.

Det tredje steget är att göra WHERE-klausulen. Detta är förmodligen den enklaste delen eftersom vi nu har ett stort bord och vi behöver bara säga vad vi behöver

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

Och det är allt. Jag försökte göra det enkelt som jag kunde. Jag slår vad om att det finns mycket badande förklaring online behöver bara göra en liten sökning...

Här är en komplett kod:

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'

Jag hoppas att detta hjälper lite, det är inte komplicerat som det ser ut till en början. Det skulle vara bättre om exempel vara med två bord men det är vad det är. GL



  1. Hur man infogar värde i identitetskolumn manuellt i SQL Server-tabell - SQL Server / T-SQL självstudie del 41

  2. MySQL-permutation

  3. Hur man beräknar skillnaden mellan två datum i SQLite

  4. MySQL-optimering på sammanfogningstabeller med intervallkriterier