簡體   English   中英

計算同一查詢中另一個 SQL 表中的行數

[英]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.

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