Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql CASE WHEN JOIN Erreur d'instruction

Je pense que vous avez l'intention :

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;

Remarques :

  • Avec une requête comme celle-ci, vous ne devez pas utiliser SELECT * , vous devez choisir explicitement les colonnes souhaitées. Les différentes tables ont des colonnes portant le même nom.
  • Vous devez utiliser des alias de colonne. Je ne les ai pas mis dans la requête, mais c'est une bonne idée.
  • Dans une vraie requête, vous auriez des expressions dans le SELECT pour combiner les colonnes de cat_breeds et dog_breeds , comme COALESCE(cat_breeds.col1, dog_breeds.col1) as col1 .