Php 内部联接和左合并以从组中获取最后一行
我有一个包含多个表的数据集,我需要将这些表链接在一起以获得所需的输出 表1-豪斯尤豪斯酒店Php 内部联接和左合并以从组中获取最后一行,php,mysql,join,Php,Mysql,Join,我有一个包含多个表的数据集,我需要将这些表链接在一起以获得所需的输出 表1-豪斯尤豪斯酒店 house_id | Name | address | zipcode 表2-房价 ID | house_id | price | status_id 表3-住房状况 ID | name 在表2中,每个huis_id有多个条目,包含价格和/或状态的变化。在我当前试图构造的查询中,我希望获得一个min/max prijs以及最新的已知状态 因为我总是想使用表1对所有位置有一个完整的概述,并试图通过左连
house_id | Name | address | zipcode
表2-房价
ID | house_id | price | status_id
表3-住房状况
ID | name
在表2中,每个huis_id有多个条目,包含价格和/或状态的变化。在我当前试图构造的查询中,我希望获得一个min/max prijs以及最新的已知状态
因为我总是想使用表1对所有位置有一个完整的概述,并试图通过左连接到此表来连接其他表
对于状态,我需要一个子查询,它是在innerjoin中构造的。我遇到的挑战是,当我在价格表上运行innerjoin时,它工作得很好,但在左连接后将其与价格组合在豪斯表上,我正在努力使其工作,这是有意义的,因为我正在尝试将表链接在一起,这目前是不可能的
当我用自己的想法撞上一堵砖墙时,任何关于如何完成这项工作的建议都是非常受欢迎的
查询:
SELECT
h.address, h.zipcode, p.huis_id, p.status
FROM
house_house h
INNER JOIN
(SELECT
house_id, status, max(id) as id
FROM
house_price
GROUP BY
house_id) p1
ON
p.house_id = p1.house_id AND
p.id = p1.id
LEFT JOIN
house_price p ON p.house_id = h.house_id
GROUP BY
p.house_id
试试这个:
SELECT hh.house_id
, hh.name
, hh.address
, hh.zipcode
, hp.ID
, hp.price
, hp.status_id
, hs.name
FROM house_house hh
LEFT
JOIN house_price hp
ON hh.house_id = hp.house_id
LEFT
JOIN house_status hs
ON hp.ID=hs.ID
您可能希望包含一些机制来识别不同于其他类型名称的房屋名称。该查询运行良好,但返回重复的行@草莓有一个很好的方法来更新查询,使用机制来区分行。@草莓我已经更新了这些行,以确保我能看到差异,并在de代码中使用这种方法。可能是个不错的选择,但我相信mysql不支持row_number()函数这很容易用变量实现
SELECT hh.house_id
, hh.name
, hh.address
, hh.zipcode
, hp.ID
, hp.price
, hp.status_id
, hs.name
FROM house_house hh
LEFT
JOIN house_price hp
ON hh.house_id = hp.house_id
LEFT
JOIN house_status hs
ON hp.ID=hs.ID