Tôi nghĩ bạn dự định:
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;
Ghi chú:
- Với một truy vấn như thế này, bạn không nên sử dụng
SELECT *
, bạn nên chọn rõ ràng các cột bạn muốn. Các bảng khác nhau có các cột trùng tên. - Bạn nên sử dụng bí danh cột. Tôi đã không đưa những điều này vào truy vấn, nhưng chúng là một ý tưởng hay.
- Trong một truy vấn thực, bạn sẽ có các biểu thức trong
SELECT
để kết hợp các cột từcat_breeds
vàdog_breeds
, chẳng hạn nhưCOALESCE(cat_breeds.col1, dog_breeds.col1) as col1
.