Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie MySQL
Forum PHP.pl > Forum > Przedszkole
dobryvinyl.com
Witam Szanownych forumowiczów,

moj problem polega, na zapewne jak dla Was prostym zapytaniu:

  1. SELECT p.id, p.nazwa, k.nazwa FROM wyszukiwanie_data d, oferta_produkty p, oferta_kategorie k WHERE (d.parametr_id='2' AND d.wartosc='11.5') AND (d.parametr_id='1' AND d.wartosc='50') AND d.produkt_id=p.id AND p.kat_id=k.id


problem ze gdy dodaje 2 nawias AND (d.parametr_id='1' AND d.wartosc='50') wynik wyszukiwania mimo poprawnych danych jest zerowy,

gdzie jest moj blad?

Za odpowiedzi bardzo dziekuje.
AxZx
select p.id, p.nazwa, k.nazwa from wyszukiwanie_data d, oferta_produkty p, oferta_kategorie k WHERE ((d.parametr_id='2' AND d.wartosc='11.5') OR (d.parametr_id='1' AND d.wartosc='50')) AND d.produkt_id=p.id AND p.kat_id=k.id
nospor
zrobiles same AND, i dales warunki, ktore wzajemnie sie wykluczają. Przeciez jedno pole nie moze jednoczesnie przyjmować dwoch wartosci dla tego samego rekordu.
Dla zrobienia LUB sluzy operator OR
dobryvinyl.com
a widzisz tu jest troszke inaczej, jest tabela produkty i zawiera kolumnu id, nazwa itd. do kazdej tabeli kolumny przypisane jest kilka parametrow wyszukiwania z tabeli wyszukiwanie data i teraz jak zrobic zeby kilka wartosci musialo sie zgadzac?

Na przykkladzie

mam w tabeli wyszukiwanie data nasteopujace rekordy_

id/parametr_id/wartosc/produkt_id
1/1/235/100
2/2/34/100
3/2/346/5
4/2/342/67
5/3/342/56
6/1/56/35

i jak teraz wypisac produkty gdzie wartosc parametru_id = 1 oraz wartosc 235 oraz parametru_id = 2 oraz wartosc = 34.
Chciany wynik to produkt o id 100

rozumiesz? czy znow namacilem?
nospor
hmm...

1) robisz na OR, grupujesz, zliczasz liczbe rekordow z takim samym produktem i pokazujesz tylko te, gdy tych rekordow jest 2
lub
2) piszesz funkcje, ktora zwraca ci ID produktu dla danych warunkow. nastepnie w selecie walisz warunki:
  1. .....WHERE p.ID = funkcja(1,235) AND p.ID = funkcja(2,34)


Przyznam szczerze ze nie miałem styczności z takim problemem wczesniej i pewnie mozna go rozwiązac ładniej niż ja to tu teraz zaproponowalem
ucho
Pisane z palca, więc może nie działać, ale po prostu:
  1. SELECT
  2. p.id,
  3. p.nazwa,
  4. k.nazwa
  5. FROM wyszukiwanie_data d1,
  6. wyszukiwanie_data d2,
  7. oferta_produkty p,
  8. oferta_kategorie k
  9. WHERE (d1.parametr_id='2' AND d1.wartosc='11.5') AND (d2.parametr_id='1' AND d2.wartosc='50') AND d1.produkt_id=p.id AND d2.produkt_id=p.id AND p.kat_id=k.id
dobryvinyl.com
Sposob podany przez ucho sprawdza sie doskonale. Bardzo dziękuje chłopaki za pomoc.
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.