我在搜索页面上有多个链接在一起的表格。他们目前被查询如下:
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返回几行。
关于如何加入此表的任何想法?
编辑 - 我还想将一个图像绑定到返回的行而不是所有图像只是这样我可以在浏览页面上将图像显示为缩略图
答案 0 :(得分:1)
我通常会按非聚合列出每个列和组,但mySQL会允许我相信;给予mySQL小组扩展;我们希望tripReport和user_Details列对于每个加入的光子名称都是相同的。
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