sql >> Databasteknik >  >> RDS >> Mysql

Mysql CASE NÄR JOIN Uttalandefel

Jag tror att du tänker:

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;

Anmärkningar:

  • Med en fråga som denna bör du inte använda SELECT * , bör du uttryckligen välja de kolumner du vill ha. De olika tabellerna har kolumner med samma namn.
  • Du bör använda kolumnalias. Jag lade inte in dessa i frågan, men de är en bra idé.
  • I en riktig fråga skulle du ha uttryck i SELECT för att kombinera kolumner från cat_breeds och dog_breeds , som COALESCE(cat_breeds.col1, dog_breeds.col1) as col1 .



  1. MySQL:Är det möjligt att "fylla" en SELECT med värden utan en tabell?

  2. Hur man filtrerar rader med nollvärden i Select Statement i SQL Server - SQL Server / TSQL Tutorial Del 110

  3. Vad är MySQL:En översikt

  4. hur man får tillbaka Java UUID lagrat i DB som binär