Buduję sobie system do obsługi kilku języków mam takie struktury tabel
tabela: jezyk (id_lang, nazwa_jezyka) - tablica z dostępnymi językami
tabela: kategorie (id_cat, nazwa_kategorii) - tablica z przypisaniem pierwszej nazwy w domyślnym języku
tabela: kat_jezyki (id_cj, id_cat, id_lang, nazwa_cat) - tablica z kategoriami w innych językach
W tabelach mam przypisane przykładowe dane:
dla jezyk:
1|polski
2|angielski
dla kategorie:
1|książki
2|AGD
dla kat_jezyki:
1|1|1|książki - (kategoria 1 w j. polskim)
2|1|2|books - (kategoria 1 w j. angielskim)
3|2|1|AGD - (kategoria 2 w j. polskim)
Listuję sobie dla konkretnej kategorii $id_kategorii listę przypisanych języków za pomocą
$id_kategorii = '1';
"SELECT J.id_lang, C.nazwa_kategorii FROM jezyk AS J LEFT JOIN kat_jezyki AS C USING(id_lang) WHERE C.id_cat='$id_kategorii'"
daje mi to wynik : książki | books
ale niestety już dla $id_kategorii = '1';
wynik będzie tylko: AGD i koniec wyników nie ma nawet pustego rekordu
Mi chodzi aby to zapytanie zwróciło pusty rekord dla 2 języka (2 rekordy),
czyli aby zwróciło że język 1 to AGD a jezyk 2 to "pusty rekord"
problem prawdopodobnie jest z tym że z góry szukam tylko rekordów odpowiadających C.id_cat='$id_kategorii'
no ale nie mogę się tego pozbyć bo właśnie chcę dane dla konkretnej kategorii.
Kombinowałem z zapytaniami INNER JOIN, RIGHT JOIN ale nie mogę zrobić tak aby wstawiło pusty rekord
dla kat_jezyk:
4|2|2|AGD - tego rekordu brakuje w bazie nie jest wpisany i chcę zapytaniem go uzyskać jako NULL dla
(kategoria 2 w j. angielskim)
podpowiedzcie jak sformułować zapytanie SQL, bo męczę się z tym trochę i powielam już swoje błędy i nie wychodzi mi ...