2016-07-28 8 views
1

Ich habe einen Vollkalender für die Reservierung. Und ich möchte volle am Datum mit 10 Reservierungen anzeigen. Und ich möchte auch die Benutzerreservierung am entsprechenden Datum anzeigen, damit er weiß, ob er bereits eine Reservierung für dieses Datum hat. Die event.title wäre entweder voll oder meine Reservierung. Wenn es 10 Reservierungen hat, ist die event.titlevoll. Wenn der Benutzer eine Reservierung für dieses Datum hat, lautet die event.titlemeine Reservierung, Die eventSource stammt aus JSON codierten Daten aus der Datenbank. Der Code unten funktioniert tatsächlich auf Anzeige voll aber es enthält nicht meine Reservierung noch.mysql wenn dann Anweisung innerhalb von

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 

Ich versuchte case verwenden, aber es scheint #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

Zeige uns einige Beispieldaten aus der 'reservations' Tabelle hier einen langen Weg gehen würde. –

+1

Tim es ist abgeleitete Tabelle q – Drew

+0

Abgeleitete Tabelle 'q' gibt mehr als 1 Zeile zurück. Es wird Zähler auf der äußeren Verpackung. Sie vergleichen mehrere Zeilen wie ein 3 – Drew

Antwort

0

eine if Aussage zu simulieren, können Sie case verwenden. Vielleicht ist es das, was Sie suchen:

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 

oder noch besser:

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