Myślę, że wybrałem dobry dział, dlatego proszę nie zrażajcie się wprowadzeniem do problemu, które odbiega od samego zagadnienia baz danych.
Wykorzystuję na stronie szablon ClassPress. W uproszczeniu jest to szablon WordPress, który posiada m.in. wszystkie podstawowe funkcje pozwalające na uruchomienie strony z ogłoszeniami (dodawanie, edytowanie itd.).
ClassiPress (CP) wykorzystuje domyślne mechanizmy przechowywania treści dostępne w WP. Nowe ogłoszenie jest dodawane jako post, tytuł ogłoszenia to tytuł postu a jego treść jest po prostu treścią postu WP. Oprócz tego, każde ogłoszenie może posiadać swoje szczególne cechy (cena towaru w ogłoszeniu, miasto gdzie można towar odebrac itd.). CP pozwala na dynamiczne definiowanie takich pól a ich wartości przechowywane są w tablicy wp_postmeta. Również jest to domyślny mechanizm WP a programiście dostarczany jest zestaw funkcji, które pozwalają w wygodny sposób korzystać z tej funkcji.
Tak więc dane o tym, ile kosztuje towar, z jakiego jest miasta i cała pozostała lista cech przechowywana jest w tabeli wp_postmeta. Jej struktura wygląda tak:
meta_id | post_id | meta_key | meta_value
przykład
1 | 1 | cp_city | Warszawa
2 | 1 | cp_price | 100
3 | 2 | cp_city | Kraków
3 | 2 | cp_price | 200
itd.
Moim zadaniem jest zbudowanie wyszukiwarki, która pozowli na wyszukiwanie ogłoszeń spełniających określone kryteria, czyli np. wszystkie ogłoszenia z Warszawy gdzie cena jest mniejsza niż 200 PLN.
Pierwsza myśl, jaka przychodzi to zbudowanie takiego zapytania
SELECT post_id FROM wp_postmeta WHERE (meta_key = 'cp_city' AND meta_value = 'Warszawa') AND (meta_key = 'cp_price' AND meta_value < 200)
niestety coś takiego nie zadziała.
Mam nadzieję, że dobrze przedstawiłem problem. Proszę o informacje jak rozwiązać ten problem.