11. august 2007 - 10:20Der er
8 kommentarer og 1 løsning
LEFT JOIN i en FROM (SELECT
Hejsa Hvordan skal denne linie sættes sammen? ********* SELECT koebsAnnoncer . * , koebsBilleder.annonceid, koebsBilleder.billede, koebsBilleder.billedeBredde, koebsBilleder.billedeHoejde, koebsBilleder.thumbnail, koebsBilleder.thumbnailBredde, koebsBilleder.thumbnailHoejde FROM ( ( SELECT * FROM koebsAnnoncer WHERE blnSlettet =0 AND blnErhverv =0 AND Dato2 > '2007-07-21' ORDER BY opdateret DESC LIMIT 20 ) LEFT JOIN koebsBilleder ON koebsAnnoncer.id = koebsBilleder.annonceid )x ORDER BY opdateret DESC LIMIT 0 , 10 ********************
MySQL returnerede: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON koebsAnnoncer.id = koebsBilleder.annonceid) x ORDER BY opdateret DE' at line 1
Jeg vil gerne vælge de første 10 poster af de 20 senste opdaterede annoncer og LEFT JOIN'en dem med koebsBilleder.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
SELECT koebsAnnoncer . * , koebsBilleder.annonceid, koebsBilleder.billede, koebsBilleder.billedeBredde, koebsBilleder.billedeHoejde, koebsBilleder.thumbnail, koebsBilleder.thumbnailBredde, koebsBilleder.thumbnailHoejde FROM ( SELECT * FROM koebsAnnoncer WHERE blnSlettet =0 AND blnErhverv =0 AND Dato2 > '2007-07-21' ORDER BY opdateret DESC LIMIT 20 ) x LEFT JOIN koebsBilleder ON x.id = koebsBilleder.annonceid ORDER BY opdateret DESC LIMIT 0 , 10
SELECT x.*, koebsBilleder.annonceid, koebsBilleder.billede, koebsBilleder.billedeBredde, koebsBilleder.billedeHoejde, koebsBilleder.thumbnail, koebsBilleder.thumbnailBredde, koebsBilleder.thumbnailHoejde FROM ( SELECT * FROM koebsAnnoncer WHERE blnSlettet =0 AND blnErhverv =0 AND Dato2 > '2007-07-21' ORDER BY opdateret DESC LIMIT 20 ) x LEFT JOIN koebsBilleder ON x.id = koebsBilleder.annonceid ORDER BY opdateret DESC LIMIT 0 , 10
Et par ord? Hmmm... - jo, det der sker er i sætningen er, at du først selekterer dine 20 poster fra koebsAnnoncer. Dem placerer du i en slags midlertidig tabel (ved at placere den i en parantes), som du navngiver x. Derfor skal man herefter referere til disse data som om det var fra en tabel som hedder x. Det er derfor, der i SELECT delen nu skal stå x.* i stedet for koebsAnnoncer.* - selvom data selvfølgelig oprindeligt kom fra denne tabel. På samme måde skal LEFT JOINs ON sætning også referere til feltet i den midlertidige tabel x.
Tja, mere er der vel ikke at sige om det... tror jeg. :-)
Ja, så længe du kun laver én insert pr. udført SQL streng, så vil funktionen returnere den autogenererede id for den senest tilføjede række foretaget af den samme connection. Hvis du udfører en INSERT som opretter flere rækker i ét hug, vil funktionen returnere den første af de oprettede id'er.
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.