sql >> Database >  >> RDS >> Mysql

SQL - match records van de ene tabel naar de andere tabel op basis van meerdere kolommen

Slecht DB-ontwerp, maar, ervan uitgaande dat je ermee moet leven:

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

BEWERKEN :Beantwoorden van de voorgestelde wending in de reacties hieronder.

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. kon bibliotheek niet laden voor oracle_fdw

  2. SQL (ORACLE):ORDER BY en LIMIT

  3. Oracle SQL-ontwikkelaar en PostgreSQL

  4. Haal mysqldump op om gegevens te dumpen die geschikt zijn voor psql-invoer (escaped enkele aanhalingstekens)