2016-07-28 120 views
1

我有一個fullcalendar保留。我想在10個預訂日期顯示全部。而且我還希望在相應的日期顯示用戶預訂,以便他知道他是否已在該日期預訂。 event.title可能是全部我的預訂。如果它有10個預訂,則event.title全部。如果用戶對該日期有保留,event.title我的保留,eventSource是來自數據庫的JSON編碼數據。下面的代碼實際上是在展示全部,但它不包括我的預訂呢。mysql如果然後選擇語句

SELECT CONCAT('FULL') as title, counter, datee as start 
    FROM (
     SELECT DATE_FORMAT(dateR, '%Y-%m-%d') AS datee, 
      COUNT(ID) AS counter 
      FROM reservations 
     GROUP BY datee 
     )q 
WHERE counter=10 

我嘗試使用case但它似乎#1242 - Subquery returns more than 1 row

SELECT 
    (case 
    when (select counter 
      FROM (
       SELECT DATE_FORMAT(dateR, '%Y-%m-%d') AS datee, 
       COUNT(ID) AS counter 
       FROM reservations 
       GROUP BY datee 
       ) q) = 10 
      then "full" 
    end) 
    as title; 

Zoomin:

(
    SELECT DATE_FORMAT(dateR, '%Y-%m-%d') AS datee, 
    COUNT(ID) AS counter 
    FROM reservations 
    GROUP BY datee 
) q 
+0

顯示我們從'reservations'表中的一些樣本數據將在這裏很長的路要走。 –

+1

Tim它派生表q – Drew

+0

派生表'q'返回多於一行。它變成了外包裝上的計數器。您正在比較多行以便像3 – Drew

回答

0

爲了模擬if語句,你可以使用case。也許這是你在找什麼:

SELECT CASE WHEN counter = 10 THEN 'FULL' ELSE 'MY RESERVATION' END as title, 
    counter, datee as start 
FROM (
    SELECT DATE_FORMAT(dateR, '%Y-%m-%d') AS datee, COUNT(ID) AS counter 
    FROM reservations 
    GROUP BY datee 
    ) q 
1
SELECT ymd, if (counter > 9, 'FULL', 'MY RESERVATION') AS Title 
FROM (
    SELECT date(dateR) AS ymd, count(*) AS counter 
    FROM reservations 
    GROUP BY 1 
) AS t 

甚至更​​好:

SELECT date(dateR) AS ymd, if (count(*) > 9, 'FULL', 'MY RESERVATION') AS Title 
FROM reservations 
GROUP BY 1