Avatar billede 7th Praktikant
08. april 2005 - 23:08 Der er 11 kommentarer og
1 løsning

Udtræk fra to tabeller via fælles id

Jeg har en tabel med artikler, som ser således ud.

+----+---------+--------------+---------+
| id | ref    | title        | body    |
+----+---------+--------------+---------+
| 1  | 111_aaa | overskrift_1 | tekst_1 |
+----+---------+--------------+---------+
| 2  | 222_bbb | overskrift_2 | tekst_2 |
+----+---------+--------------+---------+
| 3  | 333_ccc | overskrift_3 | tekst_3 |
+----+---------+--------------+---------+

Så har jeg en anden tabel med kommentarer, som ser således ud.

+----+---------+-------------+
| id | ref    | body        |
+----+---------+-------------+
| 1  | 111_aaa | kommentar_1 |
+----+---------+-------------+
| 2  | 111_aaa | kommentar_1 |
+----+---------+-------------+
| 3  | 222_bbb | kommentar_2 |
+----+---------+-------------+
| 4  | 333_ccc | kommentar_3 |
+----+---------+-------------+
| 5  | 333_ccc | kommentar_3 |
+----+---------+-------------+

Mit problem kommer når jeg skal sammenkøre disse to tabeller. Hvis jeg for eksempel udskriver artikel id 1, så skulle jeg også gerne have fat i de tilhørende kommentarer med samme ref.

Skitseret forestiller jeg mig noget i stil med

+--------------+-------------+
| title        | body        |
+--------------+-------------+
| overskrift_1 | tekst_1    |
+--------------+-------------+
| NULL        | kommentar_1 |
+--------------+-------------+
| NULL        | kommentar_1 |
+--------------+-------------+

Jeg er meget på bar bund, så jeg kan ikke rigtig vise en kodestump jeg har prøvet med.
Avatar billede alister_crowley Nybegynder
08. april 2005 - 23:11 #1
SELECT * FROM tabel1,tabel2 WHERE id='1'
Avatar billede arne_v Ekspert
08. april 2005 - 23:12 #2
Skal du ikke joine ?

SELECT *
FROM artikler,kommentarer
WHERE artikler.ref=kommentarer.ref
Avatar billede erikjacobsen Ekspert
08. april 2005 - 23:15 #3
Du kan ikke få det resultat du tegner i spørgsmålet. Men har du overvejet det simple: at lave 2 forespørgsler, og bruge PHP til at få det til at stå under hinanden?
Avatar billede 7th Praktikant
08. april 2005 - 23:22 #4
Jeg har svært ved at sige om jeg skal joine :)

Jeg har skam overvejet at lave to forespørgsler.

Er det helt umuligt at få fat på alle de tilhørende kommentarer, hvis vi glemmer den sidste skitse?
Avatar billede 7th Praktikant
10. april 2005 - 23:36 #5
Er der nogen som vil have points?
Avatar billede arne_v Ekspert
10. april 2005 - 23:39 #6
hvad er du endt op med ?
Avatar billede 7th Praktikant
11. april 2005 - 00:12 #7
Eksempel på udskrivning af artikel med tilhørende kommentarer.

SELECT articles.body article, comments.body comment FROM articles LEFT JOIN comments ON articles.id = comments.ref WHERE articles.id = 1

Så bruger jeg mysql_result() til at udskrive selve artiklen. Herefter flytter jeg med mysql_data_seek() pointer tilbage. Så er det bare at køre en løkke for at udskrive kommentarerne :)
Avatar billede 7th Praktikant
11. april 2005 - 21:04 #8
Jeg vil gerne bede om nogle svar tak.
Avatar billede arne_v Ekspert
11. april 2005 - 21:08 #9
ok (jeg skulle lige se om der var en JOIN inden jeg lagde svar)
Avatar billede 7th Praktikant
11. april 2005 - 21:50 #10
Giver lige alister_crowley en dag til også at lægge et svar.
Avatar billede erikjacobsen Ekspert
11. april 2005 - 22:20 #11
Men så vidt jeg kan se, vil du få hele artikelteksten med tilbage for hver gang der er en kommentar. Det kan godt være du nu kan nøjes med een sql-sætning, men der skal ikke mange kommentarer til før det belaster sql-serveren mere end 2 adskilte forespørgsler.
Avatar billede 7th Praktikant
12. april 2005 - 12:36 #12
Det er rigtigt, og det har jeg da også tænkt over, men da jeg ikke forventer ret mange kommentarer, og jeg har mulighed for at låse for flere, mener jeg det godt kan gå an :)
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
Computerworld tilbyder specialiserede kurser i database-management

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