Proszę o pomoc, bo już męczę się sam nie wiem jak długo z tym zapytaniem... Otóż mam 2 tablice w relacji 1:n. Pierwsza to dane rekordu (id, widoczność, daty), natomiast druga zawiera wszelkie teksty występujące w rekordzie (nazwa, treść). Parametrem rozróżniającym jest tinyint 'language', może przybierać wartości 0 (pl), 1 (en), 2 (de).
To co chcę osiągnąć tym zapytaniem, to pobranie rekordów w wybranej wersji językowej lub, jeśli dany rekord nie został jeszcze przetłumaczony, pobranie wersji domyślnej polskiej (0). Oto zapytanie:

  1. SELECT `data_tb`.`id` AS `id`, `text_tb`.`language` AS `language` , `text_tb`.`name` AS `name`
  2. FROM `kcms_article` `data_tb`
  3. RIGHT JOIN `kcms_article_txt` `text_tb` ON ( `text_tb`.`id` = `data_tb`.`id` )
  4. WHERE (`text_tb`.`language` = 1 OR `text_tb`.`language` = 0)
  5. GROUP BY `text_tb`.`id` DESC
  6. ORDER BY `data_tb`.`id`
  7. LIMIT 10


Zapytanie działa ok, kiedy dodam na końcu LIMIT. Listing:

  1. id language name
  2. 1 1 testenglish
  3. 2 0 testes
  4. 3 0 artykułowy
  5. 4 1 ang
  6. 5 0 tytuł
  7. 6 0 cztery
  8. 7 0 długie
  9. 8 0 aaaaaaaaaa
  10. 9 1 socialtechniq
  11. 10 0 socjotechnika2


Kiedy nie dodam LIMIT na końcu, lub kiedy podany limit jest mniejszy niż liczba wszystkich rekordów otrzymuję coś takiego:

  1. id language name
  2. 1 0 test11
  3. 2 0 testes
  4. 3 0 artykułowy
  5. 4 0 pol
  6. 5 0 tytuł
  7. 6 0 cztery
  8. 7 0 długie
  9. 8 0 aaaaaaaaaa
  10. 9 0 socjotechnika
  11. 10 0 socjotechnika2
  12. 11 0 wprowadzenie
  13. 12 0 ssssss
  14. 13 0 czynnik ludzki
  15. 14 0 cccccccccc
  16. 15 0 ttttttttttttttt
  17. 16 0 mmmmm
.

... czyli wszystkie rekordy w domyślnej wersji językowej :/
Moje pytanie jest takie: jak skonstruować to zapytanie, żeby niezależnie od wystąpienia LIMIT osiągnąć zamierzony efekt ?