25. april 2012 - 16:28Der 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"> </td>'; } echo'</tr> </table>'; ?>
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"> </td>'; } echo'</tr> </table>'; ?>
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
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.
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.