Zaawansowany ( jak dla mnie ) SELECT

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

1

masz źle zaprojektowaną bazę

0

To proszę o podpowiedź...

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" ???

0

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

0

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

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.

select * from komponenty where mieso||tyby =1

lub to samo tylko bardziej rozlazłe

select * from komponenty where tyby = 1 or mieso = 1
0

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

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

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

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

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

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!

0

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

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

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1