Avatar billede mhv Praktikant
14. januar 2003 - 13:03 Der er 5 kommentarer og
1 løsning

php og mysql

hvordan undgår jeg mange sql kald ?

(select id, navn from tabel1)
loop(poster fra tabel1)
  {
  vis tabel1.navn
  (select ref from tabel2
    where tabel2.tabel1_id = tabel1.id)
  loop(poster fra tabel2)
    {
    vis tabel2.ref
    }
  }

hvis jeg har 100 poster i tabel1 får jeg 101 sql kald, kan det ikke gøres bedre ??
Avatar billede Slettet bruger
14. januar 2003 - 13:07 #1
Hvis vi fortsætter din pseudokode stil:

(select tabel1.navn, tabel2.ref FROM tabel1, tabel2 WHERE tabel2.tabel1_id = tabel1.id )
loop (poster fra join) {
  vis tabel1.navn
  vis tabel2.ref
}

Vi joiner altså tabel 1 og tabel 2.
Avatar billede jakoba Nybegynder
14. januar 2003 - 13:09 #2
select tabel2.ref as reference
from tabel1, tabel2
where tabel1.id = tabel2.tabel1_id

så får du dem allesammen i eet stort resultset
Avatar billede Slettet bruger
14. januar 2003 - 13:09 #3
Og i PHP kan det se sådan her ud:

$result = mysql_query("SELECT tabel1.navn AS navn, tabel2.ref AS ref FROM tabel1, tabel2 WHERE tabel2.tabel1_id = tabel1.id") or die(mysql_error());

while ($array = mysql_fetch_array($result)) {
    echo "Navn (tabel1): ".$array['navn']."<br>";
    echo "Ref (tabel2): ".$array['ref']."<p>";
}
Avatar billede mhv Praktikant
14. januar 2003 - 13:42 #4
hvis jeg gør som du skriver, får jeg kun de poster fra tabel1 hvor tabel1.id = tabel2.tabel1_id.

jeg skal have alle fra tabel1, og jeg har fået svar under mysql, hvor jeg også kom til at oprette spørgsmålet.

http://www.eksperten.dk/spm/304454
Avatar billede Slettet bruger
14. januar 2003 - 13:46 #5
Ja det kan jo smutte ...

Og det er da iøvrigt korret, det skal være:

SELECT tabel1.navn, tabel2.ref FROM tabel1 LEFT JOIN tabel2 ON tabel2.tabel1_id = tabel1.id

- For at tilsvare din pseudokode.
Avatar billede jakoba Nybegynder
14. januar 2003 - 13:53 #6
boo hiss.
check lige reglerne en gang mere, specifikt punkt 2.1.11
og overvej (med relation til dette spm) hvorfor det er en god regle at have.

mvh JakobA
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