[英]How to combine these two SQL queries into one?
顯示請求多於報價的城市。
我進行了這兩個查詢,以顯示每個城市的消費者有多少個請求,然后向每個城市的有報價的供應商提出一個請求。 是的,這是實驗室的一部分,每個輸出都給了我,但是我已經堅持了2個小時,並且嘗試了所有我能想到的東西,這也是最后一個問題。
SELECT COUNT(c.Con_ID) 'Requests', city
FROM tb_requests r, Tb_Consumer c, Tb_Product p
WHERE r.Con_ID = c.Con_ID
AND r.Prod_ID = p.Prod_ID
ANd p.Name = 'computer'
group by city
SELECT COUNT(s.supp_id) 'Offers', city
FROM Tb_offers o, Tb_supplier s, Tb_Product p
WHERE o.supp_ID = s.supp_ID
AND o.Prod_ID = p.Prod_ID
ANd p.Name = 'computer'
GROUP By city
輸出是這樣的:
Number city
----------- ------------------------------
2 New York
4 Wausau
(2 row(s) affected)
Number city
----------- ------------------------------
2 Chicago
1 London
4 Madison
2 Stevens Point
3 Wausau
(5 row(s) affected)
正確的輸出應該是這樣(它們在一起):
City Computer Offers Computer Requests
------------------------------ --------------- -----------------
Wausau 3 4
(1 row(s) affected)
非常感謝!
當您詢問SQL問題時,請添加您的DBMS(例如MySQL,SQL Server,PostgreSQL等)
這不僅困擾着您,而且對於SQL,語法可能會因數據庫的不同而發生很大變化。
說完之后,我將使用ANSI SQL(應該在每個體面的DB上都可以使用):
SELECT t1.city, Offers, Requests
FROM (
SELECT COUNT(c.Con_ID) Requests, city
FROM tb_requests r, Tb_Consumer c, Tb_Product p
WHERE r.Con_ID = c.Con_ID
AND r.Prod_ID = p.Prod_ID
ANd p.Name = 'computer'
group by city
) t1
INNER JOIN (
SELECT COUNT(s.supp_id) Offers, city
FROM Tb_offers o, Tb_supplier s, Tb_Product p
WHERE o.supp_ID = s.supp_ID
AND o.Prod_ID = p.Prod_ID
ANd p.Name = 'computer'
GROUP By city
) t2
ON t1.city = t2.city
WHERE Requests > Offers
如果您想要更清潔的東西,應該做的完全一樣:
SELECT city, COUNT(s.supp_id) Offers, COUNT(c.Con_ID) Requests
FROM Tb_Product p
LEFT JOIN Tb_offers o ON p.Prod_ID = o.Prod_ID
LEFT JOIN Tb_supplier s ON o.supp_ID = s.supp_ID
LEFT JOIN tb_requests r ON p.Prod_ID = r.Prod_ID
LEFT JOIN Tb_Consumer c ON r.Con_ID = c.Con_ID
WHERE p.Name = 'computer'
GROUP BY city
HAVING COUNT(c.Con_ID) > COUNT(s.supp_id)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.