Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie składników lodów
Forum PHP.pl > Forum > Bazy danych > MySQL
emil1702
Witam, jak najoptymalniej zbudować bazę danych oraz zapytanie. Baza zawiera różne zestawienia lodów, np.


  1. ID NAZWA SKLADNIK1 SKLADNIK2 SKLADNIK3 SKLADNIK4
  2. 1 qwe kiwi pomarańcz wiśnia czereśnia
  3. 2 sss orzech_wloski czekolada
  4. 3 eee pomarańcz czekolada mięta
  5. 4 ttt mięta kiwi


Jak powinno wyglądać zapytanie jeśli chce wypisać wszystkie lody, w których znajduję się czekolada oraz mięta
trueblue
lod:
id_lod, nazwa
skladnik:
id_skladnik,nazwa
lod_skladnik:
id_lod,id_skladnik

  1. SELECT l.nazwa,s.skladnik,SUM(IF(s.skladnik='czekolada' OR s.skladnik='mięta',1,0)) AS ilosc FROM lod AS l,skladnik AS s,lod_skladnik AS ls
  2. WHERE l.id_lod=ls.id_lod AND s.id_skladnik=ls.id_skladnik
  3. GROUP BY l.id_lod HAVING ilosc>=2


mmmmmmm
baza taka, jak powyżej. zapytanie takie:
  1. SELECT l.nazwa FROM lod l JOIN lod_skladnik ls ON ls.id_lod=l.id_lod JOIN skladnik s ON ls.id_skladnik=s.id_skladnik WHERE s.nazwa IN ('czekolada', 'mięta') GROUP BY l.nazwa HAVING Count(DISTINCT s.id_skladnika)=2
emil1702
Dobra zrobiłem bazę jak podpowiadacie. Dane jakich lodów poszukujemy wybiera użytkownik strony, nazwy wybranych składników znajdują się w tablicy tab[].

Mam jeszcze pytanie, jak ułożyć zapytanie, które pokaże nam lody wyłącznie z tymi wybranymi składnikami (bez żadnych innych, np. użytkownik wybrał czekolada, mięta, więc lód może zawierać jedynie czekolade i mięte),

a drugie zapytanie, które pokaże nam lody z wybranymi składnikami (ale dodatkowo mogą być także inne składniki, np. użytkownik wygrał czekolada, mięta, ale lód może zawierać także np. orzechy).

Sam zrobiłem następujące zapytanie, jednak źle wyświetla dane, gdy jest więcej niż 1 składnik.
  1. SELECT lod.nazwa, lodziarnia.miasto
  2. FROM `lod`, `lodziarnia`, `skladnik`, `kompozycja`
  3. WHERE lodziarnia.id = lod.id_lodziarnia AND
  4. skladnik.nazwa IN ('".implode("', '", $tab)."') AND
  5. kompozycja.id_skladnik = skladnik.id AND
  6. lod.id = kompozycja.id_lod
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.