28. september 2010 - 14:20
Der er
8 kommentarer og 1 løsning
SQL: Hent data fra forskellige tabeller baseret på en foreign_key
Hej Eksperter. Jeg sidder lige nu og bakser med noget SQL og må erkende, at jeg er blevet lidt rusten. Jeg har en tabel, 'group', som har feltet 'id'. Og så har jeg nogle andre tabeller, 'item1', 'item2', 'item3', der alle har feltet 'group_id'. Nu vil jeg gerne, med en enkelt SQL-sætning, hente indhold fra enten item1, item2 eller item3, hvor group_id = 1. Jeg forsøger med følgende SQL: SELECT * FROM item1, item2, item3 WHERE item1.group_id = 1 OR item2.group_id = 1 OR item3.group_id = 1 Jeg har ligeledes forsøgt mig med: SELECT * FROM item1, item2, item3 WHERE group_id = 1 Uden held. Ingen resultater returneres. Har I nogle bud på, hvordan man kunne skrive en optimal SQL, der udfører denne ret simple handling? :) På forhånd tak!
Annonceindlæg fra Cornerstones
28. september 2010 - 14:40
#1
Hvorfor dele op i item1, item2 og item3? Men ellers skal du nok kigge på UNION i SQL
28. september 2010 - 15:00
#2
Jeg er ikke sikker, men er det ikke fordi at du skal joine tabel 2 og 3? så det bliver en "SELECT * FROM item1 JOIN item2, item3 WHERE item1.group_id = 1 OR item2.group_id = 1 OR item3.group_id = 1" er ikke sikker, men mener at det burde virke.
28. september 2010 - 15:03
#3
ErikJacobsen>> Det skyldes, at de kan have lidt forskellige felter. Jeg prøver at kigge lidt mere på UNION. Authiel>> Jeg forsøgte mig med det, men problemet synes at være, at du med Join henter data fra alle tabeller samtidig. Jeg vil kun hente fra én ad gangen, så jeg får resultater fra item1 ud i én række, item2 i en anden, osv.
28. september 2010 - 15:13
#4
Jeg er på arbejde lige nu, men kigger mere på det når jeg kommer hjem, og ser om jeg kan finde det du skal bruge.
28. september 2010 - 15:13
#5
ErikJacobsen>> Hvis jeg har forskellige data-felter i mine items-tabeller, så virker UNION vel ikke, gør det?
28. september 2010 - 15:51
#6
Det er korrekt - det skal være de samme felter. Så er der nok et og andet du burde lave om - måske begynde på et databasekursus. :) Eller du kan lave tre SELECT-sætninger i stedet for.
28. september 2010 - 17:26
#7
Jeg er ret sikker på, jeg ender med at måtte lægge alt i én tabel. Så må de særlige felter få sin egen. Pointene går til dig, ErikJacobsen! :)
28. september 2010 - 17:41
#8
De går ingen steder. Jeg samler slet ikke på point, tak.
28. september 2010 - 17:49
#9
Det er rigtigt ja. Nå, men tak for svaret!
Vi tilbyder markedets bedste kurser inden for webudvikling