簡體   English   中英

連接另一個表並使用2個字段進行計數時如何按計數排序

[英]how to order by count when joining another table and using 2 fields to count

所以我試圖在屏幕上顯示一些數據,包括計數。 該計數是由兩個字段的開始AT和結束At計算的。

     SELECT * FROM venue
     INNER JOIN plans ON venue.idVenue=plans.endingAt OR venue.idVenue=plans.startingAt 
     WHERE venue.idLocation = 3

這是我當前的查詢。 我想添加計數,但是我在奮斗的地方是開始表和結束表在計划表中。 所以我的問題是如何從聯接的表中進行計數以及如何對兩個字段進行計數?

先感謝您!

如果要計算其中之一匹配的位置。 你可以這樣做:

SELECT 
    SUM(CASE 
        WHEN venue.idVenue=plans.endingAt 
             OR venue.idVenue=plans.startingAt
        THEN 1
        ELSE 0
        END
    ) AS NumberOf
FROM venue
INNER JOIN plans 
    ON venue.idVenue=plans.endingAt OR venue.idVenue=plans.startingAt 
WHERE 
    venue.idLocation = 3

這將使您獲得總數。 如果您想了解每個idVenue的信息,可以像這樣通過一個小組來做到這一點:

SELECT 
    SUM(CASE 
        WHEN venue.idVenue=plans.endingAt 
             OR venue.idVenue=plans.startingAt
        THEN 1
        ELSE 0
        END
    ) AS NumberOf,
    venue.idVenue
FROM venue
INNER JOIN plans ON venue.idVenue=plans.endingAt 
      OR venue.idVenue=plans.startingAt 
WHERE 
    venue.idLocation = 3
GROUP BY
    venue.idVenue

或者,如果您只是想計數並讓所有字段構成場所表。 你可以這樣做:

SELECT 
    (
        SELECT 
            COUNT(*)
        FROM
            plans 
        WHERE 
            venue.idVenue=plans.endingAt OR venue.idVenue=plans.startingAt 
    ) AS numberOf,
    venue.*
FROM 
    venue
WHERE 
    venue.idLocation = 3

更新:如果要按順序排序,則需要在該列上放置一個別名。 像這樣:

SELECT
    *
FROM
(
    SELECT 
        (
            SELECT 
                COUNT(*)
            FROM
                plans 
            WHERE 
                venue.idVenue=plans.endingAt OR venue.idVenue=plans.startingAt 
        ) AS numberOf,
        venue.*
    FROM 
        venue
    WHERE 
        venue.idLocation = 3
) AS tbl
ORDER BY tbl.numberOf

暫無
暫無

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

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