Avatar billede bigtime Nybegynder
25. april 2012 - 16:28 Der er 5 kommentarer og
2 løsninger

Hente fra 2 tabeller i dben ?

Hejsa.
jeg har prøvet mig lidt frem men kan ikke rigtig dreje den.

Det er meningen at den skal hente de 4 nyeste annoncer fra tabellen salg og så skal den se i tabellen salgs_billeder om der er billede til annoncen og hvis der ikke er skal den ikke vise den den skal kun vise de 4  nyeste anonncer med billeder.
er det til at forstå ellers må i spørge.


<?PHP
$res = mysql_query("select * from salg order by annonce_start desc limit 0,4");
echo'<table border="0" cellspacing="0" cellpadding="0">
        <tr>';
        while($row = mysql_fetch_array($res)){
        $annonceID = $row['annonceID'];
        $res2 = mysql_query("select * from salgs_billeder WHERE annonceID='$annonceID' order by annonce_start desc limit 0,1");
        $row2 = mysql_fetch_array($res2);
        $billede = $row2['billede'];
        echo'<td align="center" valign="middle"><img src="annonce/thumb/'.$billede.'" width="100" height="100">&nbsp;</td>';   
            }
  echo'</tr>
</table>';
                ?>
Avatar billede jakobdo Ekspert
25. april 2012 - 16:57 #1
Mon ikke det er noget i stil med:

SELECT s.*,sb.* FROM salg s INNER JOIN salgs_billeder sb ON s.annonceID = sb.annonceID ORDER BY s.annonce_start DESC LIMIT 4
Avatar billede bigtime Nybegynder
25. april 2012 - 17:25 #2
hey jakobo.

både ja og nej for til hver annonce kan der være 4 billeder og den skal kun vise et fra hver annonce.

med det her vil den hente selvfølgelig den nyeste annonce og hvis der er 4 billeder til den så vil den vise de 4. men det skal den ikke den skal kun vise et fra hver annonce
<?PHP
$res = mysql_query("select * from salg order by annonce_start desc limit 0,4");
echo'<table border="0" cellspacing="0" cellpadding="0">
        <tr>';
$res2 = mysql_query("SELECT s.*,sb.* FROM salg s INNER JOIN salgs_billeder sb ON s.annonceID = sb.annonceID ORDER BY s.annonce_start DESC LIMIT 4 ");
        while($row = mysql_fetch_array($res)){
        $annonceID = $row['annonceID'];
        $row2 = mysql_fetch_array($res2);
        $billede = $row2['billede'];
        echo'<td align="center" valign="middle"><img src="annonce/thumb/'.$billede.'" width="100" height="100">&nbsp;</td>'; 
            }
  echo'</tr>
</table>';
                ?>
25. april 2012 - 17:30 #3
Jeg vil foreslå denne query:

SELECT s.*, sb.billede
FROM salg s
JOIN (SELECT * FROM salgs_billeder GROUP BY annonceID) sb
ON s.annonceID = sb.annonceID
ORDER BY s.annonce_start desc
LIMIT 4
25. april 2012 - 17:36 #4
Jeg fik trykket på knappen før forklaringen kom med.  Jeg forudsætter, at hver annonce i salg tabellen har en annonceID og at hvert billede i salgs_billeder har en annonceID der svarer til annonceID for den annonce billedet tilhører.

Hvor der er mere end et billede for en annonce giver du ingen kriteria for hvilket billed der skal vises, kun at der skal vises et.  Kun at få et billede for hver annonceID opnår du ved i sub-queryen at 'GROUP BY anonceID'.

Kun at få annoncer hvor der er et eller flere billeder opnår du ved at bruge JOIN (som er lig med INNER JOIN).  Havde du brugt LEFT JOIN havde du også fået annoncer med uden billeder.
Avatar billede bigtime Nybegynder
25. april 2012 - 19:28 #5
Tak Christian_Belgien og jakobdo.
Kan i komme med et svar vær så deler i pointene.
og igen tak Christian_Belgien for en god forklaring :D

Det hele spiller som det skal nu :D
25. april 2012 - 19:55 #6
Svar fra mig.
Avatar billede jakobdo Ekspert
25. april 2012 - 20:16 #7
Svar fra mig.
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