为这些表选择Query

时间:2015-07-27 08:36:32

标签: php mysql sql select

我有两个表项和item_details。

Table items

Table item_details

要显示Feed页面中的项目,请使用下面的JOIN QUERY。

SELECT i.item_id,i.time,id.text,id.photo FROM items i LEFT JOIN item_details id ON i.item_id=id.item_id

但是,它返回多行相同的项ID。我找到的唯一工作是首先选择items表,然后在PHP中循环时选择item_detail表。我觉得这不是最佳做法,可能影响表现。

请建议一种更好的方法来选择项目。

1 个答案:

答案 0 :(得分:1)

<强>问题:

您正在加入item_details,其中有3条记录具有相同的item_id。因此,结果 会为item_id提供更多记录。

<强>解决方案:

我认为这就是你所追求的:

SELECT i.item_id,i.time,MAX(id.text) as text,MAX(id.photo) as photo
FROM items i LEFT JOIN 
     item_details id ON i.item_id=id.item_id
GROUP BY i.item_id,i.time

示例结果:

item_id time    text                            photo
---------------------------------------------------------------------
2       87213   (null)                          (null)
4       2029    another text row for item id 4  a photo for item id 4

SQL Fiddle

中的示例结果

注意:如果您有多个具有相同item_id的记录,textphoto列的值不同,则此方法无法按预期工作。