我有一个包含多个表的数据集,我需要将它们链接在一起以获得所需的输出。
表1 - house_house
house_id | Name | address | zipcode
表2 - house_price
ID | house_id | price | status_id
表3 - house_status
ID | name
在表2中,每个huis_id有多个条目,包含价格和/或状态的变化。在我正在尝试构建的查询中,我想获得最小/最大prijs以及最新的已知状态。
因为我总是希望使用表1来全面了解所有位置,并尝试通过左连接将其他表连接到此表。
对于状态我需要一个子查询,我在内连接中构建。我遇到的挑战是,当我在价格表上运行内部连接时,它工作得很好,但是在左边加入价格之后将它组合在房子桌上,我很难让它工作,这很有意义,因为我'我试图将表格链接在一起,这是目前无法实现的。
当我用自己的想法碰到砖墙时,任何有关如何使这项工作的建议都受到欢迎。
查询:
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
答案 0 :(得分:1)
试试这个:
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
答案 1 :(得分:0)
select *
from
(
SELECT h.*, p.*
, row_number() over (h.house_id order by p.price desc) as hp
, row_number() over (h.house_id order by p.price asc) as lp
, row_number() over (h.house_id order by p.is desc) as s
FROM house_house h
JOIN house_price p
on p.house_id = h.house_id
) tt
where tt.hp = 1 or tt. lp = 1 or tt.s = 1