![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 25.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Potrzebuję pomocy w opracowaniu takiego mechanizmu wyszukiwania w bazie danych. Mam zmienne warunki : Dzienne zapotrzebowanie na białko jest na poziomie od 60 do 180g. To białko muszę rozłożyć na pięć do siedmiu posiłków.Niestety nie mogą być rozłożone równomiernie tylko przypadkowo co komplikuje sprawę. a więc: białko na dzień 120g liczba posiłków 6 Teraz muszę to podzielić na pięć nierównomiernych/przypadkowych porcji z 20% marginesem co da przedział od 96 do 144g na dzień. Czyli np:
I teraz zapytanie do bazy w pętli: znajdź posiłek o zawartości białką najbardziej zbliżonej do x, gdzie x to zawartość białka w posiłku. Nie mogę stosować klauzuli where bialko = x ponieważ wartości w bazie są różne.Muszę odnaleźć najbardziej zbliżoną wartość. Do głowy mi przychodzi teraz obliczenie marginesu 20% dla każdego posiłku min i max i użycie tego w klauzuli where. Może ma ktoś inny pomysł? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z czym dokładnie masz problem, z rozbiciem zapotrzebowania na 6 dań, czy znalezieniu dania o najbardziej zbliżonej zawartości?
To drugie wyszukujesz jednym zapytaniem, gdzie warunek ma spełniać minimalna wartość absolutna z różnicy między szukaną zawartością, a zawartością w daniu. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 25.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
To drugie czyli znalezienie dania o zbliżonej zawartości białka.
cos jak where bialko~x zrobie to przy pomocy warunku.Jesli nie znajde w zakresie to poszukam pierwszego mniejszego lub pierwszego wiekszego z order by. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Rekord w zakresie możesz znaleźć jednym zapytaniem, będzie on spełniony jeśli: wartość jest w zakresie lub jest to mniejsza wartość z: minimalna różnica dolnej wartości zakresu i zawartości w potrawie lub minimalna różnica górnej wartości zakresu i zawartości w potrawie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 25.01.2011 Ostrzeżenie: (0%) ![]() ![]() |
Rekord w zakresie możesz znaleźć jednym zapytaniem, będzie on spełniony jeśli: wartość jest w zakresie lub jest to mniejsza wartość z: minimalna różnica dolnej wartości zakresu i zawartości w potrawie lub minimalna różnica górnej wartości zakresu i zawartości w potrawie. To już mam z głowy.cel został osiągnięty,ale przysporzył dodatkowych problemów. Przy zastosowaniu moich danych biometrycznych wszystko gra i trąbi,ale jak trafi się chudszu lub grubszy to już się sypie plan bo zmienia się rozkład białka w ciągu dnia. Aby spełnić warunki we wszystkich możliwych kombinacjach potrzebowałbym min(480 000) *7)posiłków. Czyli dużo za dużo.Dietetycy do końca życia by tych przepisów nie naprodukowali. Dysponuję ok 2700 przepisami i w tym zapytaniu są dodatkowe kryteria które je po kolei eliminują. Myślę o warunku: jeśli wynik = false znajdź mniejszy i większy->porównaj->wybierz najbliższy Odbyło by się to co prawda kosztem bilansu białka,ale mam na to zgodę z góry. Ucieszyłbym się gdyby dało się do upchać w SQL Wiem,że jest jakaś metoda Levenshtein'a ale nie wiem jak ją zastosować w praktyce. Na razie ciągnę to przy pomocy warunków i dodatkowych zapytań. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Najbliższa większa wartość:
Najbliższa mniejsza wartość:
szukana_wartosc, to Twoja znaleziona obecnie. wartosc, to sumaryczna zawartość białka w potrawie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:12 |