![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam dwie tabele dotyczące artykułu. - com_artykuly (tutaj przechowywane są wszystkie ustawienia artykułu) - com_artykuly_lang (tutaj przechowywane są wszystkie tlumaczenia językowe) struktura tabeli: com_artykuly_lang (id,jezyk,tytul,wprowadzenie,tresc) w kolumnie język przechowuje wartość identyfikującą język. Język domyślny witryny to 'pl', można jednak go zmienić np. na 'en'. Do wywołania danych w języku polskim (domyslny język) używam zapytania: SELECT * FROM com_artykuly as artykuly JOIN com_artykuly_lang as tlumacz WHERE artykuly.id = '1' AND artykuly.id = tlumacz.id AND tlumacz.jezyk = 'pl' Analogicznie do wywołania danych w języku angielskim używam zapytania: SELECT * FROM com_artykuly as artykuly JOIN com_artykuly_lang as tlumacz WHERE artykuly.id = '1' AND artykuly.id = tlumacz.id AND tlumacz.jezyk = 'en' Teraz moje pytanie: Jak wywołać dane z tabeli za pomocą jednego zapytania w taki sposób, że jak użytkownik zmieni język witryny z domyślnego (w tym wypadku pl) na inny np. en tak, że jak nie będzie tłumaczenia kolumny w języku 'en' (czyli kolumna jest pusta) wybrało wartość z językiem 'pl'. Z góry dzięki za pomoc, szukałem wszędzie i nic nie mogę sobie przypasować, już mam dosyć. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Takie coś powinno Ci zadziałać:
Tylko mała uwaga: COALESCE() wybiera pierwszą wartość, która nie jest NULLem. Jeśli więc nie będzie całego rekordu dla tłumaczenia aktualnego to zwróci wartość dla tłumaczenia domyślnego. Jeśli np. wypełnisz pole tytul dla wersji en, ale nie wypełnisz pola tresc wstawiając w nie pusty ciąg znaków to jako treść zostanie zwrócony pusty ciąg znaków (bo pusty ciąg znaków nie jest NULLem). Zamiast niego musisz wpisywać NULL, a nie pusty ciąg. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie właśnie o to mi chodziło. (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 13:20 |