Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Wyszukiwarka itemów
Forum PHP.pl > Forum > Przedszkole
alarec
Witam

Mam banalny problem, którego nie potrafię rozwiązać od kilku dni, albo mam jakaś zaćmę bo wiem ze rozwiązanie powinno być proste a nie mogę na nie wpaść.

Załóżmy ze mam jakaś tebele o nazwie 'testowa'
wygląda ona tak:

cat_id | item
=========
3 | 2
-----------------
3 | 1
-----------------
5 | 2
-----------------
5 | 3
-----------------
8 | 2
-----------------
8 | 1

Wyszukiwarka ma znajdować id item'u który znajduje się tylko w kategoriach 3, 5 i 8.

próbowałem trochę sposobów najbardziej rozsądne to:
  1. SELECT * FROM `testowa` WHERE `cat_id` IN(3,5,8) GROUP BY `cat_id`

zapytanie jest ok, bo zwraca to co bym chcial, ale jeśli damy:
  1. SELECT * FROM `testowa` WHERE `cat_id` IN(3,5,111) GROUP BY `cat_id`

To również otrzymamy wynik, tylko 2 rekordy.
Najlepiej jakby wynikiem był 1 rekord z id item'u który występuje tylko w tych podanych kategoriach.


Gdyby to zadziałało to by było super
  1. SELECT * FROM `testowa` WHERE (`cat_id` LIKE 3) AND (`cat_id` LIKE 5) AND (`cat_id` LIKE 8)

ale niestety nie wiadomo czemu zwraca wynik 0 rekordów.

Może ktoś mi podsunie inny pomysł lub rozwiązanie już?
Ulysess
  1. SELECT *
  2. FROM testowa
  3. WHERE TYPE IN ( 1, 2, 3 )


jeśli chcesz jeszcze posortować według jakiś kryteriów użyj ORDER BY
alarec
Tak, ale pisałem o tym wyżej.

W twoim zapytaniu "kategorie" 1, 2, 3 wyświetlają znaleziony przedmiot, ale jak użyjemy tego samego zapytania z parametrami 1, 2 i np. 5 to nadal wyswietla wynik, a w tym przypadku jeśli nie ma produktu w takiej kategorii ma zwracać wynik 0.

Nie wiem czy rozumiesz o co mi chodzi czy mam spróbować inaczej wytłumaczyć?

nadal nie rozgryzłem tego.
Może ktoś ma jeszcze jakiś inny pomysł?
PanGuzol
Rozumiem, że chcesz aby wyświetlało id które są we wszystkich wymienionych kategoriach?
Spróbuj:
  1. SELECT count(item) AS sum FROM testowa WHERE cat_id IN (1,2,3) GROUP BY item HEAVING sum = 3
ta liczba na końcu to ilość kategorii, czyli jakbyś potrzebował itemy co są w 4 kategoriach na końcu dajesz 4 a nie 3.
alarec
nie dokładnie o to mi chodziło,
ale bardzo pomogła mi twoja odpowiedź.
Nie wpadłem jakoś na to żeby liczyć ilość wystąpień w tabeli i uwarunkować to. Jest to jeden ze sposobów rozwiązania i myślę że dotychczas najlepszy z moich wszystkich rozwiązań testowych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.