我有三个表:category
, offers
和galleries
。在我的应用程序中,我有一个搜索框,用户可以在其中输入一个category-id
,并且在每个报价中最多可以有4个图像。
我正在使用以下SQL:
SELECT offers.id
,offers.description
,offers.min_bid
,offers.max_bid
,offers.status
,offers.ending_date
,galleries.image
,galleries.crop
FROM offers
INNER JOIN galleries ON offers.id = galleries.offer_id
WHERE cat_id = $id and offers.status = 1
查询的问题是,它返回相同的报价4次,每次不同的图像…但是,我需要的是该报价只返回一次,并在该行中返回第一张图像-忽略与同一报价相关的所有其他图像。
有人能帮我弄清楚如何改变我的SQL做到这一点吗?
您可以使用group by offer limit 4
子句
INNER JOIN
返回两个表中满足ON条件的所有行。在这种情况下,您可以使用OUTER JOIN
,即LEFT JOIN
而不是INNER JOIN
。
或者您也可以使用GROUP BY
作为@cjg隐含的聚合结果,但是聚合比使用LEFT JOIN
更昂贵。