簡體   English   中英

MySQL查詢使用多個表上的計數

[英]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 JOINCOALESCE的結合要求一個代理程序至少具有一個客戶,並且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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM