[英]MySQL query using count on multiple tables
我試圖獲取的查詢是“顯示具有最多客戶端的代理”。
我正在使用的表:
realtor(rid, fname, lname)
contract(contractid, buyrid, buycid)
property(pid, price, sellrid, sellcid)
我想做的是制作一張具有合同和財產買賣關系的桌子,然后計算出最常使用的一種。 這是我不起作用的:
SELECT r.rid, fname, lname
FROM realtor r, contract c, property p
WHERE r.rid = c.buyrid and r.rid = p.sellrid
GROUP BY c.buyrid, p.sellrid
HAVING count(*) >= ALL
(SELECT count(*)
FROM contract c, property p
GROUP BY c.buyrid, p.sellrid);
當我在數據庫中運行它時,我得到了一個空集,這沒有任何意義。 我在這里做錯了什么? 我已經為此工作了幾個小時,但由於您的幫助,我陷入了困境。
我無法對此進行測試,但這是我傾向於做的事情:
SELECT r.rid,
fname,
lname,
count(*) AS clients
FROM realtor r
LEFT JOIN contract c
ON r.rid = c.buyrid
LEFT JOIN property p
ON r.rid = p.sellrid
WHERE coalesce(c.buyrid, p.sellrid) IS NOT NULL
GROUP BY r.rid
ORDER BY count(*) DESC
LIMIT 1
LEFT JOIN
與COALESCE
的結合要求一個代理程序至少具有一個客戶,並且by和limit的強制要求僅返回一行。 我在最后添加了count(*)
,使您可以更輕松地測試腳本。
SELECT r.rid,
fname,
lname
FROM realtor AS r
INNER JOIN contract AS c ON r.rid=c.buyrid
INNER JOIN property AS p on r.rid=p.sellrid
GROUP BY r.rid
ORDER BY COUNT(*) DESC
LIMIT 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.