Witam.
Mam dwie tabele - sl_minislownik_kat i sl_minislownik. W sl_minislownik_kat przechowuję same kategorie (pola id, typ i tekst). W sl_minislownik są wpisy (podkategorie i ich podrzędne wpisy, ale to raczej nieistotne w tym przypadku) z kolumnami id, typ, kat, tekst, tekst_podrz. W PHP łączę kategorie z ich podkategoriami na zasadzie: biorę ID z tabeli z kategoriami i szukam podkategorii, w których komórka "kat" jest taka sama. Problem pojawia się, gdy kategoria nie ma żadnych podkategorii - taką również wypadałoby wyświetlić.
Moje zapytanie łączące te dwie tabele wygląda tak:
$zapytanie = mysql_query(" SELECT sl_minislownik.id, sl_minislownik.typ, sl_minislownik.kat, sl_minislownik.tekst, sl_minislownik.tekst_podrz, sl_minislownik_kat.tekst_kat
FROM sl_minislownik
INNER JOIN sl_minislownik_kat
ON sl_minislownik.kat = sl_minislownik_kat.id
$warunek
ORDER BY sl_minislownik.tekst, sl_minislownik.tekst_podrz
");
Zmienna $warunek może być albo pusta (gdy chcemy wyświetlić wszystko), albo może przyjmować wartość:
WHERE tekst LIKE '%$szukaj%' OR tekst_podrz LIKE '%$szukaj%'
gdy chcemy coś wyszukać.
Wszystko wyjaśnione, ale przejdźmy do sedna...
Jak przerobić zapytanie, aby brane pod uwagę były też kategorie bez podkategorii? Domyślam się, że w tym zapytaniu już nie da się nic zrobić - jest ono łączone, czyli reszta pól byłaby niewiadoma...
Idąc na około można by najpierw wczytać wszystkie wartości z pól kat, a następnie zrobić select not in (te wartości), ale to są dwa zapytania i musiałbym osobno obrabiać dwa obiekty mysql.
Jest na to jakiś sposób?