mysql如果然后在select语句中

时间:2016-07-28 03:43:00

标签: php mysql fullcalendar

我有一个完整的日历预订。我想在10个预订的日期显示完整。我还希望在相应的日期显示用户预订,以便他知道他是否已经预订了该日期。 event.title可以是完整我的预订。如果有10个预订,event.title 已满。如果用户对该日期进行了预订,则event.title 我的预订eventSource来自数据库中的JSON编码数据。下面的代码实际上用于显示完整,但它还没有包含我的预订

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
相关问题