Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL връща 1 изображение за всеки продукт

Този ще работи, но е доста грозен

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;

алтернатива :

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ограничете резултата от SQL заявка в MySQL

  2. Най-бързият и ефикасен начин за извличане на запис от Remote MySQL към iPhone

  3. MySQL:Обединение на ляво присъединяване с дясно присъединяване

  4. Има ли функция за затваряне на mysql подготвен оператор с PDO?

  5. mysql команда за показване на текущите конфигурационни променливи