Avatar billede nwn Nybegynder
27. december 2008 - 22:29 Der er 3 kommentarer og
1 løsning

MySQL join til at hente mellem 2 tabeller

Hejsa.

Jeg har 2 SQL tabeller i min SQL database, der lyder på "spm" og "svar"

Ved at læse spørgsmålet med id 5 f.eks, hentes der fra tabellen "spm" hvor id er = 5, samtidig med der hentes fra tabellen "svar" hvor feltet spmID referer til det spørgsmål id, som svarene er placeret i.

Jeg skal nu på en side, have vist de spm (Deres titel og link til), der senest er kommet svar i. Lad os sige de 10 nyeste.

Til det, KUNNE jeg gøre således:

$hent_spm = mysql_query("SELECT * FROM `spm` ORDER BY `id` DESC LIMIT 10);
while ($vis_spm = mysql_fetch_array($hent_spm))
{
$hent_svar = mysql_query("SELECT * FROM `svar` WHERE `spmID` = ' .$vis_spm["id"]. '");
$vis_svar = mysql_fetch_array($hent_svar);

echo "<a href=\"spm.php?id=$vis_spm[id]\"> .$vis_svar["svar"] . "<br>";

Dvs. her benytter jeg 2 queryes, 1 while og 1 fecth array.

Jeg ved at det kan laves til 1 query og 1 while, ved hjælp af noget kaldet JOIN.

Men jeg kender intet til denne funktion kaldet JOIN, og de eksempler jeg har kunne finde på nettet, har ikke rigtig kunne hjælpe mig med den spmID måde man bruger i dette tilfælde :-(

Er der nogen der kan hjælpe mig lidt på vej =) ?
Avatar billede fant0mas Nybegynder
31. december 2008 - 00:19 #1
Denne returnerer spørgsmål, selvom der ikke er svar.

$hent_spm = mysql_query("
SELECT * FROM spm AS sp
LEFT JOIN svar AS sv ON sp.id = sv.spmID
ORDER BY sv.id DESC LIMIT 10);
while ($vis_spm = mysql_fetch_array($hent_spm))
{

Hvis du kun vil se spørgsmål med svar, så skal du i stedet INNER JOIN.
Og i stedet for at vælge alle kolonner (*) så nøjes med dem du faktisk skal bruge.
Godt nytår!
Avatar billede nwn Nybegynder
01. januar 2009 - 21:05 #2
Hej og ilm.

Hvad hvis jeg skal have en WHERE ved svar? For kun at trække fra bestemte svar. Har både prøvet at placere noget WHERE før AS sv og efter AS sv.
Avatar billede fant0mas Nybegynder
01. januar 2009 - 21:26 #3
LEFT JOIN svar AS sv ON sp.id = sv.spmID
WHERE sv.???? = ????
Avatar billede nwn Nybegynder
01. januar 2009 - 22:17 #4
Tak, det virker.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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