sql >> Databáze >  >> RDS >> Mysql

MySQL vrací 1 obrázek pro každý produkt

Tento bude fungovat, ale je docela ošklivý

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;

alternativa:

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. Npgsql s Pgbouncer na Kubernetes - sdružování a udržování života

  2. Jak zjistit, zda je NULL obsažena v poli v Postgresu?

  3. Odstranění duplicitních řádků v PostgreSQL s více sloupci

  4. Jak napsat foreach na SQL Server?