2017-05-12 13 views
-3

このSQL文でエラーを特定できません。誰でも助けてくださいどこでエラーが発生し、私はこれを解決することができますか?事前に感謝し、スペルや文法上の間違いをお詫び申し上げます。MYSQL SQL構文エラー解決方法?

SQL:THEN pet_info

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

エラーは何ですか? – Jer

答えて

1

これはあなたのクエリです:

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' 
    ); 

明らかな構文の問題がENDの欠如です。しかし、あなたには他の問題があります。クエリは、おそらく次のようになります。

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) 
    ); 

注:

  • あなたWHERE句はINNER JOINLEFT JOINになります。
  • 数値の前後に一重引用符を使用しないでください。
  • CASEは、WHERE節で混乱する傾向があります。基本的なブール論理を使用してください。
1

はちょうどあなたの選択の最後に '末端' を追加します。 pet_age> = '7'末端);