![](/img/trans.png)
[英]Left Join - Select ALL from left table but select only the latest from right table
[英]MySQL right query left join latest uploaded image from images table, with pagination
我正在尝试从第一个表中选择一些数据,而从图像表中选择最后一个上传的图像。 我的表如下所示:
名为data_property的表具有字段(列):
property_id,时间戳,label_town,label_sub,property_name,price_night,描述(以及在这种情况下我不需要的其他信息)。
以及带有字段(列)的表格图像:
image_id,property_id和ext。 图片名称是image_id,而ext是图片的扩展名。
每个属性(property_id行)在images表中都有12张图像。 我只需要每个属性加入最后上传的图像,并每页显示10个属性( $recordsize = 10
)。 我不知道如何组织查询
像这样的东西:
SELECT
property_id, timestamp, label_town, label_sub,
property_name, price_night, description
FROM
data_property
LEFT JOIN or INNER JOIN (image_id, property_id, ext
ORDER BY image_id DESC LIMIT 1)
FROM images ORDER BY timestamp DESC LIMIT $recordstart, $recordsize
因此,我需要从data_property中选择几个字段,加入属于该属性的最新上传图像,按创建属性广告的时间排序,从desc排序,并在每页显示10个属性。
要在此网站上获得类似内容: http : //www.freehouseagent.com/property-for-sale/ireland/
对不起,我的英语不好。 我希望你能理解我。 谢谢,最好的问候!
尝试这个:
SELECT
p.property_id, p.timestamp, p.label_town, p.label_sub, p.property_name,
p.price_night, p.description, i.image_id, i.property_id, i.ext
FROM
data_property as p
LEFT JOIN images as i
ON p.property_id = i.property_id
GROUP BY p.property_id
ORDER BY p.timestamp DESC
LIMIT 10
您也可以尝试使用此方法以提高准确性:
SELECT
p.property_id, p.timestamp, p.label_town, p.label_sub, p.property_name,
p.price_night, p.description, i.image_id, i.property_id, i.ext
FROM
data_property as p
LEFT JOIN (
SELECT MAX(image_id) as max, property_id
FROM
images
GROUP BY
property_id
) as n
ON p.property_id = n.property_id
LEFT JOIN
images as i
ON i.image_id = n.max AND i.property_id = n.property_id
ORDER BY p.property_id DESC
LIMIT 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.