sql >> Database >  >> RDS >> Mysql

Hoe een inner join-veld kiezen met IF / case?

Probeer deze zoekopdracht (bewerkt ) -

SELECT c.*,
  CASE c.comment_type WHEN 8 THEN p1.photo_p_id WHEN 17 THEN p2.photo_id ELSE NULL END photo_id,
  CASE c.comment_type WHEN 8 THEN p1.column1 WHEN 17 THEN p2.column1 ELSE NULL END column1
FROM comments c
  LEFT JOIN photos p1
    ON c.object_id = p1.photo_p_id
  LEFT JOIN photos p2
    ON c.object_id = p2.photo_id

Nog een variant -

SELECT c.*, p.*
FROM comments c
  JOIN photos p
    ON c.comment_type = 8 AND c.object_id = p.photo_p_id OR c.comment_type = 17 AND c.object_id = p.photo_id



  1. Schemawijzigingen in MySQL en MariaDB op een veilige manier uitvoeren

  2. Hoe dien je alleen een klikgebeurtenis (div) in bij gebruik van de jQuery live-functie?

  3. Hoe kunnen beperkingen met externe sleutels tijdelijk worden uitgeschakeld met T-SQL?

  4. MySql kopieerwaarde van de ene rij naar de andere