Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 内部联接和左合并以从组中获取最后一行_Php_Mysql_Join - Fatal编程技术网

Php 内部联接和左合并以从组中获取最后一行

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对所有位置有一个完整的概述,并试图通过左连

我有一个包含多个表的数据集,我需要将这些表链接在一起以获得所需的输出

表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