![](/img/trans.png)
[英]How do I order by an aggregate count in Rails when also joining to the same table?
[英]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.