Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mySQL一对多连接_Php_Mysql_Join - Fatal编程技术网

Php mySQL一对多连接

Php mySQL一对多连接,php,mysql,join,Php,Mysql,Join,我在搜索页面上有多个链接在一起的表。它们当前的查询方式如下: SELECT * FROM tripreportentries JOIN tripreport ON tripreportentries.reportid = tripreport.tripreportid JOIN user_details on tripreportentries.userid = user_details.userid WHERE TripEntryHeading LIKE '%%' AND

我在搜索页面上有多个链接在一起的表。它们当前的查询方式如下:

SELECT * FROM tripreportentries 
    JOIN tripreport ON tripreportentries.reportid = tripreport.tripreportid 
    JOIN user_details on tripreportentries.userid = user_details.userid
WHERE TripEntryHeading LIKE '%%' AND tripreportentries.ispublic = 1
ORDER BY tripreportentryid
此后,我创建了一个名为tripphotos的新表,表列名为:

  • 三像体
  • 报告ID
  • entryid
  • 照片名
问题是每个条目在照片表中可以有多张对应的照片

我希望找到一种方法,将新表连接到上面的语句中,但不为每个条目id返回几行


关于如何加入这张桌子有什么想法吗


编辑-我还想将一个图像绑定到返回的行,而不是所有图像,这样我就可以在浏览页面上将图像显示为缩略图。我通常会按非聚合列出每个列和组,但我相信mySQL会允许这样做;通过扩展赋予mySQL组;我们希望tripReport和user_Details列对于每个加入的photoname都是相同的

SELECT tripReport.*, user_details.*, max(photoname) as maxPhotoPerReport 
    FROM tripreportentries 
    JOIN tripreport ON tripreportentries.reportid = tripreport.tripreportid 
    JOIN user_details ON tripreportentries.userid = user_details.userid
    JOIN tripphotos ON tripreportentries.reportid = tripPhotos.ReportID
WHERE TripEntryHeading LIKE '%%' AND tripreportentries.ispublic = 1
GROUP BY ReportId
ORDER BY tripreportentryid
或者,我们可以使用内联视图来获取每个报表的最大照片,然后将该集合加入到基本查询中

SELECT * 
    FROM tripreportentries 
    JOIN tripreport ON tripreportentries.reportid = tripreport.tripreportid 
    JOIN user_details on tripreportentries.userid = user_details.userid
    JOIN (SELECT max(photoName) as MaxPhotoPerReport, ReportID 
          FROM TripPhotos 
          GROUP BY  ReportID) B 
        ON B.ReportID = tripReport.ReportId
WHERE TripEntryHeading LIKE '%%' AND tripreportentries.ispublic = 1
ORDER BY tripreportentryid

隐马尔可夫模型。。。只是猜测;使用
group\u concat()
然后可能加入。“关于如何加入此表的想法?”使用子查询(内联视图)limit 1或使用聚合。你必须问自己的问题是,你想要返回哪个图像。您可以使用聚合并返回最小/最大照片;假设没问题。但如果你真的在乎哪张照片,就需要明确要求。如果需要每个查询的最新/最旧结果,则可以使用子查询按1限制结果,并按EntryId desc或升序进行排序record@xQbert谢谢你的回复。我现在对返回图像没有真正的兴趣,这将是第二阶段的改变,我将改变整个结构以及这个页面如何工作。目前正在寻找一个快速解决方案。这帮助我解决了问题,但并不完全正确,因为它为每一行返回相同的照片,即使照片与该条目不匹配,但我从中得到了修复。我假设连接条件基于名称。这是连接关系的问题吗?