Avatar billede uniquedk Nybegynder
05. august 2009 - 20:53 Der er 2 kommentarer og
1 løsning

Query optimerings spørgsmål

Halløj der.... er ved at være et stykke tid siden jeg sidst har programmeret noget men er nu igang med noget nyt.... og jeg sidder her med et lille stykke php kode jeg godt kunne tænke mig noget input på...

$cat_id = $_GET['category'];
    $sql = mysql_query("SELECT * FROM qoutes WHERE cat_id = '$cat_id' ");

   
    while ($row = mysql_fetch_array($sql)) {
        $author = $row['author_id'];
        $sql2 = mysql_query("SELECT name,surname FROM authors WHERE id = '$author'");
        $the_author = mysql_fetch_row($sql2);
        echo "<div class='the_quote'><div class='quote_left'><div class='quote_smalltext'>" . $the_author['0'] . " " . $the_author['1'] . "</div><div class='quote_right'>" . $row['the_qoute'] . "</div></div></div><br />";
    }

Mit spørgsmål går på om det ikke er en uholdbar metode mht. til min $sql2 query? jeg tænker den skal jo lave en query hver eneste gang while sætningen løber igennem den første query, men årsagen er at jeg skal hente en informtion i en anden table en den while sætningen kører igennem og bruge den info inde i hver enkelt resultat fra den første sql query....

Håber det er forståeligt hvad jeg mener.....
Så spørgsmålet er egentlig bare om der er smartere måder eller om det er gængs metode noget i stil med hvad jeg gør...
Er der smartere metoder må der meget gerne peges i retning med eksempler eller evt. links til guides herom
Avatar billede arne_v Ekspert
05. august 2009 - 21:52 #1
Formentligt er det bedre at lave en enkelt query med en join af de to tabeller.
Avatar billede uniquedk Nybegynder
05. august 2009 - 22:48 #2
ja har arbejdet lidt med det før.... men det er sgu ikke helt.
Men tror alligevel jeg fik fikset det....

Ser det ikke meget rigtig ud det her så, det virker ihvert ifald til at virke efter hensigten... håber jeg :-)

$cat_id = $_GET['category'];
    $sql = mysql_query("SELECT qoutes.*, authors.* FROM qoutes,authors WHERE qoutes.author_id=authors.id && qoutes.cat_id = '$cat_id'");
   
    while ($row = mysql_fetch_array($sql)) {
        echo "<div class='the_quote'><div class='quote_left'><div class='quote_smalltext'>" . $row['name'] . " " . $row['surname'] . "</div><div class='quote_right'>" . $row['the_qoute'] . "</div></div></div><br />";
    }

smid en kommentar og et svar hvis du vil ha' point, selvom det var et kort svar ledte det mig dog i den rigtige retning ;-)
Avatar billede arne_v Ekspert
05. august 2009 - 23:02 #3
Det ser helt rigtigt ud.

Og et svar.
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