Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro de instrução Mysql CASE WHEN JOIN


Acho que você pretende:
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;

Notas:
  • Com uma consulta como essa, você não deve usar SELECT * , você deve escolher explicitamente as colunas desejadas. As diferentes tabelas têm colunas com o mesmo nome.
  • Você deve usar aliases de coluna. Não os coloquei na consulta, mas são uma boa ideia.
  • Em uma consulta real, você teria expressões no SELECT para combinar colunas de cat_breeds e dog_breeds , como COALESCE(cat_breeds.col1, dog_breeds.col1) as col1 .