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

Tabulka vnitřního spojení MySQL na základě hodnoty sloupce

Chcete-li mít statistiky všech tabulek, můžete použít UNION se 2 nebo více výběry, jeden pro každou tabulku:

( SELECT s.*
       , table1.title AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName1 table1
      ON s.id = table1.id
  WHERE tableName = '$tableName1'
)
UNION ALL
( SELECT s.*
       , table2.name AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName2 table2
      ON s.id = table2.id
  WHERE tableName = '$tableName2'
)
UNION ALL
( SELECT s.*
       , table3.lastname AS name      --or whatever field you want to show
  FROM stats s
    JOIN $tableName3 table3
      ON s.id = table3.id
  WHERE tableName = '$tableName3'
)
;

Použití Winfredova nápadu s LEFT JOIN s. Poskytuje různé výsledky, např. každé pole z ostatních tabulek je na výstupu ve svém vlastním sloupci (a vyskytuje se mnoho NULL).

SELECT s.*
     , table1.title      --or whatever fields you want to show
     , table2.name
     , table3.lastname   --etc
FROM stats s
  LEFT JOIN $tableName1 table1
    ON s.id = table1.id
      AND s.tableName = '$tableName1'
  LEFT JOIN $tableName2 table2
    ON s.id = table2.id
      AND s.tableName = '$tableName2'
  LEFT JOIN $tableName3 table3
    ON s.id = table3.id
      AND s.tableName = '$tableName3'
--this is to ensure that omited tables statistics don't appear
WHERE s.tablename IN
   ( '$tableName1'
   , '$tableName2'
   , '$tableName3'
   )
;


  1. Nová instalace MYSQL, přístup odepřen pro uživatele „root“

  2. Co je prohlížeč SQLite a jak jej používat?

  3. Room API - Jak získat nedávno vložené vygenerované ID entity?

  4. MySQL zkontroluje, zda tabulka existuje, aniž by vyvolalo výjimku