2013-03-21 60 views
0

我有三个表:category,offersgalleries。在我的应用程序中,我有一个搜索框,用户输入category-id,每个优惠中最多可以有4个图像。SQL JOIN返回的行太多

我使用下面的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来做到这一点?

回答

1

您可以使用group by offer limit 4条款

+0

是你想法帮了我 – 2013-03-21 17:43:24

+0

我刚刚在上面的查询中加入了“group by offers.id” – 2013-03-21 18:01:07

+0

请不要根据答案改变你的问题。否则,没有人会知道是什么问题。 – georgecj11 2013-03-21 18:02:49

0

INNER JOIN回报每一个从两个表满足ON条件的行。在这种情况下,您可以使用OUTER JOIN,即LEFT JOIN而不是INNER JOIN

或者您也可以使用GROUP BY将结果汇总为@cjg暗示,但汇总比使用LEFT JOIN更昂贵。