2

我正在尝试从第一个表中选择少量数据,并且仅从图像表中选择最后上传的图像。我的表如下所示:

名为 data_property 的表具有字段(列):

property_id、timestamp、label_town、label_sub、property_name、price_night、description(以及在这种情况下我不需要的其他内容)。

以及带有字段(列)的表格图像:

image_id、property_id 和分机。图片名称是 image_id,ext 是图片的扩展名。

每个属性(property_id 行)在图像表中有 12 个图像。我只需要加入每个属性最后上传的图像,并$recordsize = 10每页显示 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/

对不起,我的英语不好。我希望你能理解我。谢谢和最好的问候!

4

1 回答 1

1

试试这个:

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
于 2013-04-09T22:29:07.597 回答