Autor Zpráva
Madenio
Profil
Dobry den, potreboval by som pomoct s MySQL query pre vytiahnutie dat z dvoch tabuliek. Pripravujem jeden modul, ktory ma za ulohu prekladanie textov do zvoleneho jazyka. V jednej tabulke (sections) mam zdrojove texty a do druhej tabulky (translations) sa ukladaju preklady, ktore sa spajaju so zdrojovou tabulkou pomocou prislusnej ID referencie a odlisuju sa podla ID jazyka v cielovej tabulke.

Skriptom si chcem teda nacitat zdrojove texty a pomocou LEFT JOIN k nim priradit preklad, aj ked este neexistuje. Robim to pomocou nasledujucej query:

SELECT sections.*, translations.*
FROM sections
LEFT JOIN translations ON sections.section_id = translations.translation_section_id
WHERE sections.section_book_id = '8'
AND (translations.translation_language_id = '1' OR translations.translation_language_id IS NULL)
LIMIT 10

Toto vsetko funguje fajn, ale len do chvile, ked uz neexistuje preklad v cielovej tabulke s ID ineho jazyka. V takom pripade sa mi uz pre ine ID jazyka nenacita nic. Potreboval by som to nejakym univerzalnym sposobom spojazdnit, ze sa mi bud nacita existujuci zaznam pre konkretny jazyk v cielovej tabulke a ked neexistuje, tak sa nacitaju prazdne polia po JOINe.

Dakujem za kazdu radu.
JaySee
Profil
Madenio:
Ahoj, přesně tohle jsem řešil nedávno v tomhle vláknu.

Funguje to bezvadně.
Madenio
Profil
Velmi pekne dakujem!
JaySee
Profil
Madenio:
Jo Kajman je borec!
Madenio
Profil
Nakoniec som to vyriesil inak, nakolko tvoj pripad nebol uplne rovnaky ako moj. Mne staci, aby sa zobrazili prazdne polia, cize spravil som nasledovne:

SELECT
sections.*,
translations.*
FROM
sections
LEFT OUTER JOIN translations ON sections.section_id = translations.translation_section_id AND translations.translation_language_id = '1'
WHERE
sections.section_book_id = '9'
LIMIT 10

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: