Avatar billede w13 Novice
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!
Avatar billede erikjacobsen Ekspert
28. september 2010 - 14:40 #1
Hvorfor dele op i item1, item2 og item3?

Men ellers skal du nok kigge på UNION i SQL
Avatar billede Authiel Nybegynder
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.
Avatar billede w13 Novice
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.
Avatar billede Authiel Nybegynder
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.
Avatar billede w13 Novice
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?
Avatar billede erikjacobsen Ekspert
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.
Avatar billede w13 Novice
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! :)
Avatar billede erikjacobsen Ekspert
28. september 2010 - 17:41 #8
De går ingen steder. Jeg samler slet ikke på point, tak.
Avatar billede w13 Novice
28. september 2010 - 17:49 #9
Det er rigtigt ja. Nå, men tak for svaret!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester