Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie składników lodów
emil1702
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.01.2012

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


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


Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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
Go to the top of the page
+Quote Post
emil1702
post
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 10.01.2012

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


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
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 - 11:59