簡體   English   中英

如何在選擇查詢中使用聯接表和計數

[英]How to use join table and count with select query

我對復雜的SQL查詢不好,所以我發布了這個問題,如果您能幫助我,我會很高興。

我有2張桌子。 第一個是idea_box ,第二個是idea_box_voting 現在首先我要加入兩個表,然后我要計算那里id的總數0和1。 這是我的兩張桌子。

idea_box
--------

Idea_id property_id     idea_title  the_idea    user_id
25      0               Idea 25     Lorem       23      
24      0               Idea 24     Lorem       23      
23      0               Idea 23     Lorem       23          
22      0               Idea 22     Lorem       23
21      0               Idea 21     Lorem       23
20      0               Idea 20     Lorem       23

idea_box_voting
---------------

vote_id     idea_id ip              user_id     thumbs
37          25      192.168.1.14    23          1
44          25      192.168.1.14    23          1
47          25      192.168.1.14    23          0
40          25      192.168.1.14    23          1
41          24      192.168.1.14    23          1
38          24      192.168.1.14    23          0
45          24      192.168.1.14    23          1
39          23      192.168.1.14    23          1
46          23      192.168.1.14    23          0
42          23      192.168.1.14    23          0
43          22      192.168.1.14    23          1

我想要這個輸出:

Idea_id property_id     idea_title  the_idea    user_id one_count zero_count
25      0               Idea 25     Lorem       23      3        1
24      0               Idea 24     Lorem       23      2        1
23      0               Idea 23     Lorem       23      1        2  
22      0               Idea 22     Lorem       23      1        0
21      0               Idea 21     Lorem       23      0        0
20      0               Idea 20     Lorem       23      0        0

謝謝。

SELECT ib.*,
    (
        SELECT COUNT(*)
        FROM idea_box_voting ibv
        WHERE ibv.idea_id = ib.idea_id AND ibv.thumbs = 1
    ) AS one_count,
    (
        SELECT COUNT(*)
        FROM idea_box_voting ibv
        WHERE ibv.idea_id = ib.idea_id AND ibv.thumbs = 0
    ) AS zero_count
FROM idea_box ib

嘗試這個

Select Count(CASE WHEN vote.thumbs = 0 THEN 1 END) AS Zero_Count
       Count(CASE WHEN vote.thumbs = 1 THEN 1 END) AS One_Count
FROM idea_box as ib
left Join idea_box_voting as vote
On vote.idea_id = ib.idea_id
Group by vote.idea_id
SELECT
      Idea_id
    , property_id
    , idea_title
    , the_idea
    , user_id
    , COUNT(CASE
            WHEN thumbs = 1 THEN thumbs END) one_count
    , COUNT(CASE
            WHEN thumbs = 0 THEN thumbs END) zero_count
FROM idea_box i
      LEFT JOIN idea_box_voting v
                  ON i.Idea_id = v.idea_id
GROUP BY
      Idea_id
    , property_id
    , idea_title
    , the_idea
    , user_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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