Php 为这些表选择查询

Php 为这些表选择查询,php,mysql,sql,select,Php,Mysql,Sql,Select,我有两个表格项目和项目详细信息。 为了显示提要页面中的项目,我使用下面的连接查询 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 但是,它返回多行相同的item id。我找到的唯一解决方法是首先选择items表only,然后在PHP中循环时选择item_detail表。我觉得这不是最佳做法,可能会影响绩效 请建议一个更好的方法来选择

我有两个表格项目和项目详细信息。

为了显示提要页面中的项目,我使用下面的连接查询

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
但是,它返回多行相同的item id。我找到的唯一解决方法是首先选择items表only,然后在PHP中循环时选择item_detail表。我觉得这不是最佳做法,可能会影响绩效


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

问题:

您正在加入具有相同
item\u id
的3条记录的
item\u details
。因此,结果将具有该
项的更多记录

解决方案:

我想这就是你想要的:

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
样本结果


NB:如果有多条记录具有相同的
项目id
文本
照片
列的值不同,则此方法将无法按预期工作。

如果表中不应该有一对多关系,为什么会有一对多关系?或者,另一方面,如果应该是一对多,那么为什么要阻止它出现在代码中呢?这就是它应该如何按照您的设计工作。是否只想有一行?是的,一行有一个图像和一个文本。。。。我将在转到详细信息页面时显示所有其他内容