[英]How do I inner join 2 SQL tables, but only take the first result from the second table?
我正在建立一个页面,您可以在其中租用公寓和其他东西,并且每个公寓都有很多图片,因此我制作了2张桌子。 一个带有所有公寓,一个带有所有图像,我用外键连接到特定的公寓。 我想要所有公寓,但每间公寓只需要1张图片。
我尝试做LIMIT 1,但随后也将套间限制为1。
这是我的代码:
$sql = "SELECT bolig_boliger.id AS bolig_id, titel, areal, rooms,
indflytning, husleje, image
FROM bolig_boliger
INNER JOIN bolig_images ON bolig_boliger.id = bolig_images.bolig_id";
一种简单的方法可以关联子查询。 当然,您还没有显示表的布局,因此我必须推测哪些列位于何处以及如何标识最新行。 一个合理的猜测是:
SELECT b.id AS bolig_id, titel, areal, rooms, indflytning, husleje, image
FROM bolig_boliger b INNER JOIN
bolig_images i
ON b.id = i.bolig_id
WHERE i.id = (SELECT MAX(i2.id) FROM bolig_images i2 WHERE i2.bolig_id = i.bolig_id)
与一个子查询联接,该子查询为每个公寓ID返回一行,而不是与整个表联接。
SELECT b.id, b.titel, b.areal, b.rooms, b.indflytning, b.husleje, i.image
FROM bolig_boliger AS b
JOIN (
SELECT bolig_id, MAX(image) AS image
FROM bolig_images
GROUP BY bolig_id
) AS i ON b.id = i.bolig_id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.