nicke78Medlem sedan okt. 200221 inlägg Jag har två tabeller i mysql. I den ena ligger det objekt med information som ska presenteras och i den andra ligger information om bilden. Varje objekt kan ha flera bilder knytna till sig via ett table som heter bilder. Nu skulle jag dock endast vilja läsa ut en första bilden på varje objekt och presentera sex stycken åt gången. Det ser ut som nedan, ursäkta formateringen..
<table = objekt>
id
info
pris
</table>
<table = bilder>
id
oid => det objektet som bilden hör till
bild => filnamn
</table>
SELECT objekt.id as id, bild FROM bilder LEFT JOIN objekt ON objekt.id=bilder.oid
Det ger en lång lista på 57 rader och 33 objekt. Hur ska jag formulera om frågan så jag får ut de första sex objektens bild. Antar att jag ska kombinera detta tillsammans med limit. Jag använder PHP som programmerings språk, men jag tror att lösningen på problemet ligger i sql koden...
Tack på förhand
//Niklas
LarsGMedlem sedan dec. 200012 464 inlägg Hur definierar du vad som är första bilden?
nicke78Medlem sedan okt. 200221 inlägg Det baseras på primärnyckeln som är id. Oid är en sekundärnyckel som länkar samman bilden med objektets primärnyckel.
Så första bilden är helt enkelt den bilden med lägst id, den som kommer först ur databasen då objekt.id=bilder.oid
//Niklas
LarsGMedlem sedan dec. 200012 464 inlägg select o.id, o.info, o.pris, b.bild
from object o join bilder b on o.id = b.oid
where b.id in
(select min(id)
from bilder
where b.oid = bilder.oid)
nicke78Medlem sedan okt. 200221 inlägg Det funkar inte, får följande fel meddelande.
[Localhost] ERROR 1064: You have an error in your SQL syntax near 'on o.id = b.oid
where b.id in
(select min(id)
from bilder
w' at line 2
LarsGMedlem sedan dec. 200012 464 inlägg Vilken version av Mysql har du? Jag förutsätter 4.1 eller senare.
Det går att skriva om frågan utan subselect, något mer svårbegriplig dock
select o.id, o.info, o.pris, b1.bild,b1.id as bildid
from object o inner join bilder b1 on o.id = b.oid
inner join bilder b2 on b1.oid = b2.oid
group by o.id, o.info, o.pris, b1.bild,b1.id
having b1.id = min(b2.id)