Witam wszystkich,

Mam następujący problem:
Tworzę wyszukiwarkę do bazy danych, która musi zwracać określoną w PHP ilość rezultatów (chodzi o stronicowanie wyników). Wyszukiwarka oparta jest na dwóch, a w zasadzie na trzech tabelach:
1. tlumaczenie_ramowe (tutaj przeszukuje kolumnę tytul),
2. slowo_z_tlumacz (tabela wynikająca z relacji wiele-do-wielu),
3. slowa_kluczowe (przeszukiwane są nazwy słów kluczowych).

Każde tlumaczenie ramowe posiada co najmniej jedno słowo kluczowe. Górna granica nie jest ustalona.

Efektem zapytania powinny być następujące wyniki:
- zwrócenie id tłumaczeń ramowych, w których tytuł spełnia warunek
- zwrócenie COUNT ilości słów kluczowych danego tłumaczenia, które spełniają warunek. W przypadku braku COUNT = 0.

Chodzi mi o realizację wyżej wymienionych założeń za pomocą JEDNEGO zapytania korzystającego z klauzuli LIMIT x, y.

Zainteresowanym z góry dziękuję za pomoc i pozdrawiam.

ok, udało mi się sklecić działające zapytanie, które wygląda tak:
  1. SELECT DISTINCT tr.id_tlumaczenia, (
  2. SELECT COUNT(sk.id_slowa)
  3. FROM slowa_kluczowe sk, _slowo_z_tlumacz_ szt
  4. WHERE sk.slowo_kluczowe LIKE '%$pytanie%' AND szt.id_tlumaczenia = tr.id_tlumaczenia AND sk.id_slowa = szt.id_slowa)
  5. FROM tlumaczenie_ramowe tr
  6. INNER JOIN _slowo_z_tlumacz_ szt ON szt.id_tlumaczenia = tr.id_tlumaczenia
  7. INNER JOIN slowa_kluczowe sk ON sk.id_slowa = szt.id_slowa
  8. WHERE sk.slowo_kluczowe LIKE '%$pytanie%' OR tr.tytul_pl LIKE '%$pytanie%'
  9. ORDER BY (
  10. SELECT COUNT(sk.id_slowa)
  11. FROM slowa_kluczowe sk, _slowo_z_tlumacz_ szt
  12. WHERE sk.slowo_kluczowe LIKE '%$pytanie%' AND szt.id_tlumaczenia = tr.id_tlumaczenia AND sk.id_slowa = szt.id_slowa)
  13. DESC
  14. LIMIT $poczatek, $itemsPerPage


Jeśli ktoś ma jakiś pomysł jak można do jakoś ładniej napisać, skrócić to piszcie.