Mysql
 sql >> Database >  >> RDS >> Mysql

Errore di istruzione Mysql CASE WHEN JOIN

Penso che tu intenda:

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;

Note:

  • Con una query come questa, non dovresti usare SELECT * , dovresti scegliere esplicitamente le colonne desiderate. Le diverse tabelle hanno colonne con lo stesso nome.
  • Dovresti usare alias di colonna. Non li ho inseriti nella query, ma sono una buona idea.
  • In una query reale, avresti espressioni in SELECT per combinare colonne da cat_breeds e dog_breeds , come COALESCE(cat_breeds.col1, dog_breeds.col1) as col1 .