[英]Count rows from another SQL table in the same query
我有 2 個表,只有一個查詢我必須得到結果我有 url 表和投票表。
Table url
|id |url |category|
|.............|...............|........|
|1 |example1.com |1 |
|2 |example2.com |1 |
|3 |example3.com |2 |
|4 |example4.com |1 |
Table vote
|id |note |
|.............|............|
|1 |1 |
|1 |2 |
|1 |1 |
|2 |1 |
我想做一個查詢,顯示 url 表的所有字段以及帶有注釋 1 的所有行的計數。
我試過這個查詢:
SELECT u.id, u.url, u.cat, COUNT(*) as countnote
FROM vote v, url u
WHERE u.cat=1 and v.note=1
但它只顯示一排。
預期結果:
|id |url |countnote|Category|
|.............|...............|.........|........|
|1 |example1.com |2 |1 |
|2 |example2.com |1 |1 |
|4 |example4.com |0 |1 |
謝謝您的幫助
WITH URLL (ID,URLL,CATEGORY)AS
(
SELECT 1,'EXAMPLE1.COM',1
UNION ALL
SELECT 2,'EXAMPLE2.COM',1
UNION ALL
SELECT 3,'EXAMPLE3.COM',2
UNION ALL
SELECT 4,'EXAMPLE4.COM',1
),
VOTE(ID,NOTE)AS
(
SELECT 1,1
UNION ALL
SELECT 1,2
UNION ALL
SELECT 1,1
UNION ALL
SELECT 2,1
)
--the query
SELECT UR.ID,UR.URLL,UR.CATEGORY,COALESCE(XQ.CNTT,0)CNTT
FROM URLL AS UR
LEFT JOIN
(
SELECT COUNT(ID)CNTT,V.ID
FROM VOTE AS V
WHERE V.NOTE=1
GROUP BY V.ID
)XQ ON UR.ID=XQ.ID
WHERE UR.CATEGORY=1
我只是建議一個相關的子查詢:
SELECT u.*,
(SELECT COUNT(*)
FROM vote v
WHERE v.id = u.id AND v.note = 1
) as num_note_1
FROM url
WHERE u.cat = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.