私はあなたが意図していると思います:
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
など 。