2017-05-12 2 views
-3

Ich kann keinen Fehler in dieser SQL-Anweisung herausfinden. jeder kann mir bitte helfen wo ist der fehler und wie kann ich das beheben? Vielen Dank im Voraus und Entschuldigung für die Rechtschreibung oder Grammatikfehler.MYSQL SQL-Syntaxfehler Wie wird gelöst?

SQL:

SELECT count(*) as `total` FROM `pet_info` LEFT JOIN `lostpets` ON `lostpets`.`petid` = `pet_info`.`id` WHERE `lostpets`.`reunited`='No' AND (CASE WHEN `pet_info`.`pet_aggg` = 'birth' THEN `pet_info`.`pet_birthdate` <= '2011-05-12' WHEN `pet_info`.`pet_aggg` = 'age' THEN `pet_info`.`pet_age` >= '7'); 
+2

Was ist der Fehler, den Sie bekommen? – Jer

Antwort

1

Das ist Ihre Abfrage:

SELECT count(*) as `total` 
FROM `pet_info` LEFT JOIN 
    `lostpets` 
     ON `lostpets`.`petid` = `pet_info`.`id` 
WHERE `lostpets`.`reunited`='No' AND 
     (CASE WHEN `pet_info`.`pet_aggg` = 'birth' 
      THEN `pet_info`.`pet_birthdate` <= '2011-05-12' 
      WHEN `pet_info`.`pet_aggg` = 'age' 
      THEN `pet_info`.`pet_age` >= '7' 
    ); 

Die offensichtliche Syntax Problem ist der Mangel an END. Aber du hast andere Probleme. Die Abfrage sollte wahrscheinlich so aussehen:

SELECT count(*) as `total` 
FROM `pet_info` pi JOIN 
    `lostpets` l 
     ON l.`petid` = pi.`id` 
WHERE l.`reunited`= 'No' AND 
     ((pi.pet_aggg = 'birth' AND pi.pet_birthdate <= '2011-05-12') OR 
     (pi.pet_aggg = 'age' AND pi.pet_age >= 7) 
    ); 

Hinweise:

  • Ihre WHERE Klausel schaltet die LEFT JOIN in eine INNER JOIN.
  • Verwenden Sie keine einfachen Anführungszeichen um numerische Werte.
  • CASE neigt dazu, in einer WHERE Klausel zu verwirren. Verwenden Sie einfach die grundlegende boolesche Logik.
1

Fügen Sie einfach 'Ende' zu Ende Ihrer select: THEN pet_info. pet_age> = '7' Ende);

Verwandte Themen