Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie z 2 tabel ze względu na zaznaczone chechboxy
Teilor
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.03.2015

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


Hej.
Mam małe pytanko o to w jaki sposób by miało wyglądać następujące zapytanie:
Mam 3 encje ( składniki , potrawy oraz 1asocjacyjną która łączy dane z tych 2 tabel) - jak na dołaczonym screenie.


(IMG:http://s13.postimg.org/5km987v79/test.png)

Mamy składniki i po zaznaczeniu kilku, wypisuje nam dpozycje z tabeli potraw które spełniają wyniki wyszukiwania.
Na screenie zaznaczyłem wszystko co potrzebne aby to zrozumieć


Moje próby:
Tutaj wypisałem wszytkie pola z 2 tabel aby móc używać nazwy zamiast ID
  1. $sql2 = "SELECT a.id, a.nazwa_skladnika , b.id , b. skladniki_id , b.przepisy_id FROM `skladniki` a, `relation_4` b WHERE a.id = b.skladniki_id; ";


Ale po wielkich potach nie mam pomysłu na to jak stworzyć zapytanie ktore sprawdza które składniki wybraliśmy i zgodnie z tymi wypisuje pozycje z potraw które zawierają te i tylko te składnki.
Z góry dziękuje za pomoc! (IMG:style_emoticons/default/smile.gif)


Rozwiązałem już sam mój problem . W sposób dość nieprofesionalny, ale działa . Pozdrawiam i dziękuję tym, którzy chociaż przecyztali (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
MGie
post
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

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


spróbuj tak:
  1. SELECT id_potrawy FROM skladniki_potraw WHERE id_skladnik IN ( 0, 2 , 3 )


odbierz formularzem zaznaczone składniki do jednej tablicy,
i funkcją implode twórz stringi na wzór "0,2,3"
Kod
http://php.net/manual/en/function.implode.php
Go to the top of the page
+Quote Post
javafxdev
post
Post #3





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

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


Zakładając że masz schemat jak na rysunku:

(IMG:http://javafxdev.pl/images/db_diagram.gif)

I będziesz chciał pobrać potrawy które zawierają te i tylko te składnki tak jak napisałeś, to nie rób zapytania które polecił Ci MGie bo da Ci ono złe rezultaty
Np. potrawa:
- Chleb(1) wymaga: Mąka(1), Sól(2)
- Makaron(2) wymaga: Mąka(1), Jajko(3)
podając w zapytaniu MGie - In(1,2) zwróci Ci, że mając w domu tylko mąkę(1) i sól(2) możesz sobie śmiało robić makaron, co oczywiście nie jest prawdą bo brakuje Ci jajka(3), ale zapytanie Ci tego nie wyfiltruje.

Spróbuj raczej zrobić:

  1. SELECT * FROM przepisy p LEFT JOIN relation_4 ON p.id = relation_4.przepisy_id
  2. WHERE NOT EXISTS (SELECT 1 FROM relation_4 WHERE skladniki_id NOT IN (1,2) AND przepisy_id = p.id)
  3. AND skladniki_id IS NOT NULL;
Go to the top of the page
+Quote Post

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: 23.08.2025 - 14:03