我有四個表,我需要提取每個所有者的個別費用。程式的價格在proceduredetails表中,所有者的名字在owners表中。這兩個表沒有相同的列。我必須參考pets表和procedurehistory表來連接它們。
這是我當前的查詢
select owners.name ||' '|| owners。 surname as Owner, sum(proceduredetails.price) as price
from owners, proceduredetails
join pets p on owners.ownerid = p.ownerid
inner join procedurehistory p2 on p.petid = p2.petid
group by owners.ownerid。
我得到了一個錯誤
。ERROR: invalid reference to FROM-clause entry for table " owners" 提示。 有一個表 "所有者 "的條目,但它不能被查詢的這一部分所參考。 這一部分的查詢。
uj5u.com熱心網友回復:
應用內部連接而不是交叉連接和適當的關系。由于ownerid被用于group by子句,所以MAX()被用于owner name,因為ownerid是唯一的。否則,在group by子句中使用ow.name ||' '|| ow.surname而不是ownerid。
-- PostgreSQL
SELECT MAX(ow. name ||' '|| ow.surname) AS Owner
, SUM(pd.price) as price
FROM owners ow
INNER JOIN pets p
ON ow.ownerid = p.ownerid
INNER JOIN procedurehistory p2
ON p.petid = p2.petid
INNER JOIN proceduredetails pd
ON pd.proceduretype = p2.processtype
GROUP BY ow.ownerid。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/307801.html
標籤:

