sql >> Database teknologi >  >> RDS >> Mysql

SQL - match poster fra en tabel til en anden tabel baseret på flere kolonner

Dårligt DB-design, men forudsat at du skal leve med det:

SELECT h.name
    FROM tblhobby h
        INNER JOIN tblavailable_hobby ah1
            ON h.hobby1 = ah1.available_hobby
        INNER JOIN tblavailable_hobby ah2
            ON h.hobby2 = ah2.available_hobby
        INNER JOIN tblavailable_hobby ah3
            ON h.hobby3 = ah3.available_hobby

REDIGER :Besvarelse af det twist, der er foreslået i kommentarerne nedenfor.

SELECT h.name
    FROM tblhobby h
        LEFT JOIN tblavailable_hobby ah1
            ON h.hobby1 = ah1.available_hobby
        LEFT JOIN tblavailable_hobby ah2
            ON h.hobby2 = ah2.available_hobby
        LEFT JOIN tblavailable_hobby ah3
            ON h.hobby3 = ah3.available_hobby
    WHERE (h.hobby1 IS NULL OR ah1.available_hobby IS NOT NULL)
        AND (h.hobby2 IS NULL OR ah2.available_hobby IS NOT NULL)
        AND (h.hobby3 IS NULL OR ah3.available_hobby IS NOT NULL)


  1. Er COMMIT påkrævet efter hver EXECUTE IMMEDIATE?

  2. Alternativ til delvis (ikke-aggregeret kolonne) i gruppe efter [Ollivanders Inventory-problem på hackerrank]

  3. Sender liste over parametre til SQL i psycopg2

  4. Trigger Insert med en SELECT/JOIN