sql >> Database >  >> RDS >> Mysql

MySQL retourneert 1 afbeelding voor elk product

Deze zal werken, maar is behoorlijk lelijk

select p.intProductId, p.strProductName, pi.strImageName 
from tblProducts p
inner join tblProductImages pi on pi.intProductID = p.intProductId
inner JOIN (select min(intOrder) minOrder, intProductID
           FROM tblProductImages
           GROUP BY intProductID) s
           on s.intProductID = p.intProductID and s.minOrder = pi.intOrder
union
select p.intProductId, p.strProductName, pi.strImageName
from tblProducts p
left join tblProductImages pi on pi.intProductID = p.intProductId
where pi.intProductID is null;

alternatief :

select p.intProductId, p.strProductName, pi.strImageName
from tblProducts p
left join tblProductImages pi on pi.intProductID = p.intProductId
where pi.intProductId is null or pi.IntOrder = (select min(intOrder)
                                                from tblProductImages
                                                where intProductId = pi.intProductId);

Sqlfiddle



  1. Hoe te controleren op een index in Oracle

  2. sp_send_dbmail alternatief in postgres? Gemakkelijke manier om Postgres e-mailrapporten te verzenden?

  3. Hoe combineer je drie MySQL-query's in één?

  4. Som per maand op en zet maanden in kolommen