Zaawansowany ( jak dla mnie ) SELECT

Zaawansowany ( jak dla mnie ) SELECT
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

WItam,
Mam problem z wyszukaniem ( być może i z baza :) ).-MySql.
Sama baza zbudowana jest na dwóch tabelach. Jedna Przepisy ( idPrzepisy, Nazwa (varchar), skladniki (varchar, opis (varchar) a druga- komponenty (idKomponenty, mieso Tinyint(), rybyTinyint()...itd).
tinyint ustawione na 1 albo 0
Chodzi mi o to ze mam problem z takim wyszukanie - Np. chcę wyszukać przepis ale przez zaznaczenie np. Mięsa ( jako 1 ) i gdy dodam Ryby to mięso nie zniknie tylko sie dołączy w wyszukiwaniu itd.

Wszystko bedzie działało pod C# wiec będzie jakby ruchome - jedynka bedzie w kazdej chwili mogła się zmienić w 0 i na odwrót.
Dopóki jest wlączona 1 ma się wyświetlać zaznaczony komponent ale dla 0 ma go nie być- ufff.
Mam nadzieję że nie namieszałem strasznie.
Proszę o pomoc bo siedzę z tym drugi dzień.

GS
  • Rejestracja: dni
  • Ostatnio: dni
1

masz źle zaprojektowaną bazę

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

To proszę o podpowiedź...

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

gdzie ?? np tutaj

komponenty (idKomponenty, mieso Tinyint(), rybyTinyint()...itd).

każda kategoria komponentu (mięso, ryby...) w oddzielnej kolumnie .. a co będzie jeśli dojdą Ci "warzywa" ?? czy będziesz przebudował bazę i dodawał do tabeli nową kolmnę "warzywo TinyInt" ???

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Zrobiłem tak ponad godzinę temu, ale dalej stoję w tym samym miejscu.

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

co zrobiłeś ?
pokaż schemat całej bazy

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3892
1

Ja nie widzę powiązania między tabelami, ale potrzebujesz zrobić alternatywę w warunku WHERE, rozumiem, że jeżeli masz zaznaczone mięso i ryby to mam pobrać takie rekordy które przynajmniej jedno ma wartość 1.

Kopiuj
select * from komponenty where mieso||tyby =1

lub to samo tylko bardziej rozlazłe

Kopiuj
select * from komponenty where tyby = 1 or mieso = 1
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Baza jest niekompletna, bo cały czas coś z nią kombinuje, ale powiedzmy że tak wygląda teraz.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3892
0

Nie wiem co to ma rozwiązać, ale pierwsze co bym zmienił to tabelę śniadanie, obiad scalił bym w jedną np posiłek, dodają kolumnę typ, która będzie przechowywać info o tym czy to sniadanie/obiad jakby doszedł podwieczorek/obiad czy cokolwiek innego to opiszesz to spokojnie w danych, tabel mieso/ryby nie rozumiem więc nie podpowiem

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

@Darker:
to teraz zadaj sobie pytanie .. co będzie jeśli w menu pojawią się "warzywa" albo "nabiał" albo coś jeszcze innego ?? będziesz tworzył kolejne tabele pt. "nabial' , "warzywa" ???
co będzie jeśli pojawią się kategorie posiłku inne niż "śniadanie" albo "obiad" , czy też będziesz tworzył nowe tabele pt "podwieczorek" albo "kolacja" ?

przemyśl strukturę bazy

GS
  • Rejestracja: dni
  • Ostatnio: dni
0

aby ogarnąć cały problem to widział bym cztery tabele

  1. wydane posiłki
  2. definicje posiłków
  3. definicje produktów
    4, kategorie produktów

i do tego ewentualnie piąta tabela z danymi klienta

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Moze od razu od tego powinienem zaczac....Wystarczy wybrac dział, albo składniki i poobserwowac- to w zasadzie ma byc cos identycznego.
Zaznaczasz dodaje sie grupa, odznaczasz grupa znika, ale jedna drugiej nie wyklucza
https://kuchnialidla.pl/przepisy/kuchnia-czeska

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

@Panczo: ale po co zmieniać coś, co jest takie piękne, że nie mogę się napatrzeć. Mięso jako tinyint, to chyba jakieś wpływy wegatariańskie. A tabela lacznik, która łączy wszystkie pozostałe... ona jest jak najlepsza mama na świecie!

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Wiesz może coś zaproponujesz skoro jesteś taki mądry... potrzeba mi pomocy.
Ps. pewnie sporo tu pomyłek ale akurat nie TINYINT :).

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

No ja bym proponował zadać pytanie. Opisać konretny problem, który chcesz rozwiązać. Bo jak na razie, to ciężko się nawet domyśleć, co próbujesz tu zmajstrować.

  • Rejestracja: dni
  • Ostatnio: dni
0

Jeśli wzorujemy się na linku Lidla to można to rozwiązać np tak.
przepisy.png

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Dzięki wszystkim praktycznie z każdej pomocy skorzystałem ...w sumie udało mi się zbudować zapytanie ale patrząc na tą bazę zastanawiam się czy nie pozmieniam parę rzeczy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.