Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z zapytaniem. Niby proste a jednak
Rafix24
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2004

Ostrzeżenie: (0%)
-----


Witam,
Problem jest blahy na pierwszy rzut oka ale napsul mi wystarczajaco duzo krwi a i tak nie wiem jak go rozwiazac wiec zwracam sie do Was o pomoc.

Mam 3 tabele Restauracje, Posilki_Restauracji, Posilki.

:arrow: Restauracje (id_rest,.....)
:arrow: Posilki (id_pos, nazwa_pos)
:arrow: Posilki_Restauracji (id_rest, id_pos)

Restauracje moga miec zero lub wiele posilkow.

Uzytkownik chce znalezc restauracje, ktora oferuje jednoczesnie np. pizze (id_pos=1), hamburgery (id_pos=2) i hot-dogi (id_pos=3).

PYTANIE : Jakie zadac zapytanie do bazy, by zwrocila id_rest tylko takich restauracji, ktore spelniaja wszystkie 3 warunki (warunkow moze byc oczywiscie dowolna ilosc ograniczona jedynie iloscia zdefinowanych posilkow w tabeli Posilki) ?!?

Po trzech bezowocnych godzinach siedzenia nad tym zupelnie stracilem koncepcje i wiare ze mozna to zrobic...

Bardzo licze na pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Rafix24
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.03.2004

Ostrzeżenie: (0%)
-----


Shima, oczywiscie ze nie ma to byc czyste zapytanie sql. Skrypt php jak najbardziej mile widziany (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Spenalzo, zapytanie w postaci :
[sql:1:5bfe631829]SELECT r.*
FROM restauracje r, posilki_restauracji pr,posilki_restauracji pr2, posilki_restauracji pr3
WHERE r.id_rest=pr.id_rest AND pr.id_pos = 1 AND pr2.id_pos = 2 AND pr3.id_pos = 3
GROUP BY r.id_rest
[/sql:1:5bfe631829]

zwraca, tak jak mowilem, restauracje, ktore maja jeden z zadanych posilkow a nie tylko te, ktore maja je wszystkie jednoczesnie.

Jednak jak zmieni sie troche Twoje zapytanie na :

[sql:1:5bfe631829]SELECT r.*
FROM restauracje r, posilki_restauracji pr,posilki_restauracji pr2, posilki_restauracji pr3
WHERE r.id_rest=pr.id_rest AND r.id_rest=pr2.id_rest AND r.id_rest=pr3.id_rest AND pr.id_pos = 1 AND pr2.id_pos = 2 AND pr3.id_pos = 3
GROUP BY r.id_rest
[/sql:1:5bfe631829]
wydaje sie ze to dziala prawidlowo - potestowalem troche i zwraca dobre wyniki.
Moze zle przepisales wczesniejsze zapytanie i dlatego u Ciebie to chodzilo a u mnie nie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zrobie wiecej INSERTow i potestuje na wiekszej bazie, ale wydaje sie ze to jednak TO...
Wielkie dzieki Spenalzo (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Inne rozwiazania bardzo mile widziane.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 16:14