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
且文本
和照片
列的值不同,则此方法将无法按预期工作。如果表中不应该有一对多关系,为什么会有一对多关系?或者,另一方面,如果应该是一对多,那么为什么要阻止它出现在代码中呢?这就是它应该如何按照您的设计工作。是否只想有一行?是的,一行有一个图像和一个文本。。。。我将在转到详细信息页面时显示所有其他内容