Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyraźne dołączenie do mySQL?

Spróbuj tego:

SELECT     a.locale, c.text AS text_1, d.text AS text_2
FROM       (SELECT DISTINCT locale FROM i18n) a
CROSS JOIN table_1 b
LEFT JOIN  i18n c ON b.text_1 = c.id_i18n AND a.locale = c.locale
LEFT JOIN  i18n d ON b.text_2 = d.id_i18n AND a.locale = d.locale

Pokaz SQLFiddle

EDYTUJ :To może działać lepiej:

SELECT
    a.locale, b.text_1, c.text_2
FROM
    (SELECT DISTINCT locale FROM i18n) a
LEFT JOIN
(
    SELECT b.locale, b.text AS text_1
    FROM   table_1 a
    JOIN   i18n b ON a.text_1 = b.id_i18n
) b ON a.locale = b.locale
LEFT JOIN
(
    SELECT b.locale, b.text AS text_2
    FROM   table_1 a
    JOIN   i18n b ON a.text_2 = b.id_i18n
) c ON a.locale = c.locale

Demo SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać STRCMP() do porównywania 2 ciągów znaków w MySQL?

  2. Łączenie operacji UNION i LIMIT w zapytaniu MySQL

  3. Łączenie różnych tabel na podstawie wartości kolumny

  4. Filtrowanie zapytania MySQL w PHP

  5. Błąd instalacji gem mysql2 (Windows 8)