Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql CASE WHEN JOIN Грешка в оператора

Мисля, че възнамерявате:

SELECT *
FROM `pet_info` LEFT JOIN
     `lostpets`
     ON `pet_info`.`id` = `lostpets`.`petid` LEFT JOIN
     `pet_images`
     ON `pet_info`.`id` = `pet_images`.`petid` LEFT JOIN
     `cat_breeds`
     ON `cat_breeds`.`id` = `pet_info`.`pet_breed` AND
        `pet_info`.`pet_cat` = 2 LEFT JOIN
     `dog_breeds`
     ON `dog_breeds`.`id` = `pet_info`.`pet_breed` AND
        `pet_info`.`pet_cat` = 1
WHERE `pet_info`.`pet_user_id` = 581;

Бележки:

  • При заявка като тази не трябва да използвате SELECT * , трябва изрично да изберете колоните, които искате. Различните таблици имат колони с едно и също име.
  • Трябва да използвате псевдоними на колони. Не ги поставих в заявката, но са добра идея.
  • В реална заявка ще имате изрази в SELECT за комбиниране на колони от cat_breeds и dog_breeds , като COALESCE(cat_breeds.col1, dog_breeds.col1) as col1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изграждане на защитен публичен API с PHP/MYSQL

  2. При влизане в SQL израз преди име на колона

  3. MYSQL REGEXP търсене в JSON низ

  4. Mysql тригер за актуализиране на вмъкнатия ред

  5. Вмъкнете няколко реда с подготвени изрази за PDO