Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie z 2 tabel ze względu na zaznaczone chechboxy
Forum PHP.pl > Forum > Bazy danych > MySQL
Teilor
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.




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! 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 smile.gif
MGie
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
javafxdev
Zakładając że masz schemat jak na rysunku:



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;
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.