Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Bazy danych _ Modyfikacja kwerendy z możliwością filtrowania przepisów

Napisany przez: adus97 25.12.2020, 20:06:07

Dobry wieczór,

Czy powyższą kwerendę można zmodyfikować w taki sposób aby wyświetlała ona również przepis mimo brakującego składnika?

SELECT *, IF(SUM(exist IS NULL), NULL, SUM(exist)) AS total FROM( SELECT p.Nazwa, p.obrazek, p.id,IF(ps.skladniki_id IN('372,258,209'),1,NULL)AS exist FROM przepisy AS p INNER JOIN przepisy_skladniki AS ps ON ps.przepisy_id=p.id) AS tmp GROUP BY id HAVING total






Proszę o pomoc, dziękuję smile.gif

Napisany przez: Pyton_000 26.12.2020, 11:34:00

Najszybciej zmienić IN na ANY i już będziesz miał przepisy które zawierają którykolwiek składnik

Napisany przez: adus97 26.12.2020, 16:57:54

Niestety zmiana w kwerendzie z IN na ANY nic nie pomogła a ba wyskakuje informacja, ze kwerenda jest źle sformułowana

  1. SELECT *, IF(SUM(exist IS NULL), NULL, SUM(exist)) AS total FROM( SELECT p.Nazwa, p.obrazek, p.id,IF(ps.skladniki_id ANY('372,258,209'),1,NULL)AS exist FROM przepisy AS p INNER JOIN przepisy_skladniki AS ps ON ps.przepisy_id=p.id) AS tmp GROUP BY id HAVING total

Napisany przez: LowiczakPL 31.12.2020, 08:46:42

Cytat(adus97 @ 25.12.2020, 20:06:07 ) *
Czy powyższą kwerendę można zmodyfikować w taki sposób aby wyświetlała ona również przepis mimo brakującego składnika?


Czyli nie interesuje cię czy zawiera wszystkie składniki tylko czy zawiera jakikolwiek ze składników, jeśli zawiera choć 1 to pobierasz przepis, no i sobie sumujesz ilość zawieranych składników tak?

Napisany przez: adus97 1.01.2021, 16:44:28

Cytat(LowiczakPL @ 31.12.2020, 08:46:42 ) *
Czyli nie interesuje cię czy zawiera wszystkie składniki tylko czy zawiera jakikolwiek ze składników, jeśli zawiera choć 1 to pobierasz przepis, no i sobie sumujesz ilość zawieranych składników tak?


Kwerenda zawierająca wszystkie składniki jest już stworzona:
  1. SELECT *, IF(SUM(exist IS NULL), NULL, SUM(exist)) AS total FROM( SELECT p.Nazwa, p.obrazek, p.id,IF(ps.skladniki_id IN('372,258,209'),1,NULL)AS exist FROM przepisy AS p INNER JOIN przepisy_skladniki AS ps ON ps.przepisy_id=p.id) AS tmp GROUP BY id HAVING total


Chcę stworzyć kwerendę, która uwzględnia oba te kwestie
a) wyświetlanie przepisu zawierającego wszystkie składniki
cool.gif wyświetlanie przepisu mimo zawartych wszystkich do niego składników

Nie wiem czy jest to w ogóle fizyczne do wykonania. Baza prezentuje się w następujący sposób:

https://pastebin.com/raw/ejG9XrzR

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)