sql >> Databáze >  >> RDS >> Mysql

SQL - párování záznamů z jedné tabulky do druhé tabulky na základě několika sloupců

Špatný návrh DB, ale za předpokladu, že s tím musíte žít:

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

UPRAVIT :Odpověď na zvrat navržený v komentářích níže.

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. Oprávnění pro vytvoření spouštěče v mysql

  2. Změnit na velkém stole v řešení RDS na plný stůl Chyba

  3. Oprava „ERROR 1054 (42S22):Neznámý sloupec „…“ v „klauzuli objednávky“ při použití UNION v MySQL

  4. Každá odvozená tabulka musí mít svůj vlastní alias – kdy je něco odvozenou tabulkou?