![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 7.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Próbuję zrkbić sumowanie wybranych danych z sql Przykładowa tabela: ID|nazwa_produktu|energia_produktu|bialko_produktu 1 |Mąka | 2000 |100 2 |Woda | 2000 |100 3 |Margaryna | 2000 |100 4 |Marmolada | 2000 |100 chciałbym zsumować energie_produktu dla np. Mąki i Margaryny (dane porównuję za pomocoów post)
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Chcesz wypisać tylko sumę czy masz gdzieś listę tych wybranych produktów? Bo jeśli to pierwsze, to możesz zrobić zapytanie z sum(), a jeśli drugie, to możesz zsumować sobie w pętli, bo i tak masz potrzebne rekordy.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 7.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Tylko sume próbowałem z sum() ale nie wychodzi
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Pokaż jak próbowałeś.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 7.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Twoje zapytanie wyszukuje produkty, których nazwa to jednocześnie A, B i C. Czyli to się nigdy nie sprawdza, gdy A != B != C. Rozumiesz?
Zamiast tego, zrób zapytania na zasadzie:
Ten post edytował SmokAnalog 10.11.2016, 15:32:53 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 7.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Nie zabardzo tak mogę .
Juz pokazuję na czym to polega: Wpisujemy do formularza dane np.woda i Mąka które sa filtrowane za pomoca autocompleat i sprawdzane czy sa w bazie jezeli sa w bazie skrypt przechodzi dalej. Następnie muszę zliczyć ich energie ktora jest podana w bazie, a dane ma filtrowac z pomoca formularza czyli jak wpisze w formularzu Mąka i Woda to ma zliczyc energie mąki i wody. A robiąc w ten sposób zlicza mi ze wszystkich wierszy kiedy j bym chcial tylko z wybranych
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem z czym masz problem. Po prostu zrób tak, żeby zapytanie otrzymało odpowiednie IN (a, b, ...).
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 7.11.2016 Ostrzeżenie: (0%) ![]() ![]() |
Tak też zrobiłem ale zlicza mi wszystkie wiersze a nie tylko 3 tak jak chce
obecnie mam w bazie 12 pozycji i w echo mi zwraca 12 zamiast 3 zakładajac ze dla kazdego energia jest rowna 1 Zrobiłem to w jeszcze inny sposób tylko nie działa ma ktos jakis pomysł ![]()
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
W chwili obecnej, Twoje zapytanie wygląda tak:
Jest już prawie dobrze. Operator IN w SQL nie przyjmuje pojedynczego stringa ze słowami oddzielonymi przecinkami, ale osobnych stringów. Powinno być tak:
Widzisz różnicę? Musisz dynamicznie podpiąć te parametry, to nie jest aż takie znowu trywialne. Dam Ci podpowiedź. Najłatwiej będzie Ci to zrobić w taki sposób:
Najtrudniejsza część to dokleić te znaki zapytania w odpowiedniej liczbie, ale dasz radę. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tu masz opisane jak to zrobić.
-------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego to durne array_fill przyjmuje indeks początkowy jako pierwszy parametr? Ciekawe w ilu przypadkach na 100 ktoś to ustawia na coś innego niż zero. Idiotyzm.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A dlaczego durne i od ilu ma mieć indeks? Na logikę skladnia jest dobra chociaz pamiętam ze jak wtedy szukałem najlepszego rozwiązania to właśnie sporo w tym bylo błędów. Ale że ludzie nie czytają dokumentacji to ich problem.
Ten post edytował viking 11.11.2016, 05:27:42 -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Zupełnie się z Tobą nie zgadzam, viking. A już tym zdaniem "Ale że ludzie nie czytają dokumentacji to ich problem." osiągnąłeś szczyt ignorancji.
Głupawa deklaracja array_fill nie jest niczym uzasadniona. Ta funkcja jest po prostu źle zaprojektowana. Jej deklaracja powinna wyglądać tak: Lub tak: Przy czym moim zdaniem bardziej naturalna jest pierwsza możliwość, bo najpierw chce się (ja chcę?) podać co ma być w tej tablicy, a potem ile. Nie na odwrót. Dlaczego uważasz, że w porządku jest $start_index jako pierwszy parametr? Pokusiłbym się nawet o zdanie, że tego parametru mogłoby całkowicie nie być. Po co niby mam zaczynać od jakiegokolwiek indeksu numerycznego? Jedyny sensowny przykład jaki wymyśliłem, to taki: Ale i tak jest głupawy, bo lepiej by było zrobić to tak: Jak już mam mieć wpływ na indeks w array_fill to o wiele lepszy byłby argument typu callable: Otrzymywałby wartość i indeks jako parametry i żeby użyć go w durnowaty sposób zaproponowany przez array_fill, mielibyśmy na przykład:
viking naprawdę uważasz, że funkcja array_fill jest sensownie zaprojektowana? o0 |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wszystkie argumenty są wymagane więc kolejność nie ma i tak żadnego znaczenia. Dla mnie obecna konstrukcja jest bardziej naturalna. Wolę indeksy numeryczne na początku a później dopiero wartości. Przykładowo:
Zdecydowanie łatwiej ogarnąć krótkie pierwsze, długie kolejne -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Podaj mi sensowne uzasadnienie tego kodu. Tworzysz tablicę rozpoczynającą się od indeksu getA() zawierającą kilka identycznych callable? Nie. Po prostu nie. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Co rozumiesz przez identycznych?
-------------------- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem w sumie po co ta dyskusja, to jest jeden z tych przypadków, gdzie jestem pewien mojego punktu widzenia. Bardzo nie lubię, kiedy ktoś się wykazuje ignorancją i posługuje się argumentami na poziomie "o ich problem, że nie czytają dokumentacji". Jest to retoryka z rynsztoka.
Argumenty funkcji muszą być w sensownej kolejności, niestety PHP nie przestrzega tego paradygmatu, dlatego mamy np. array_map i array_filter, które mają je po prostu na odwrót. Takich przypadków jest o wiele więcej w PHP. Nie ma co tego bronić, bo to podpada pod fanatyzm i zaślepienie. Są to złe decyzje projektowe i oby kiedyś zostały naprawione. Przykład z array_fill jest ewidentny. Tablica indeksowana n..m, gdzie n > 0, to w większości przypadków błąd projektowy aplikacji. Nie bez powodu w (prawie?) wszystkich innych językach nie ma nawet czegoś takiego jak tablica asocjacyjna, czasem są słowniki. Ale nikomu nie przychodzi do głowy słownik z kluczami np. 5, 6, 7 itd. Jest to egzotyczne zastosowanie, które owszem - może kiedyś znaleźć zastosowanie, ale nie należy dla tego osobliwego przypadku dawać - uwaga - obowiązkowego i pierwszego ( ![]() |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wybacz ale na pewno 90% problemów na tym forum wynika tylko i wyłącznie z tego że komuś nie chciało się zajrzeć do dokumentacji. To co funkcja zwraca to dla wielu osób już totalna abstrakcja. A i tak dokumentacja przeszła jakiś czas temu spory lifting i jest obecnie dużo bardziej czytelna. Lenistwa nie popieram więc dlaczego tego jednego zdania się po raz kolejny uczepiłeś? Błędy w nazewnictwie i kolejności znane są od wielu wielu (żeby daleko nie szukać mysql_query / pg_query) lat więc nic nowego. Nie ma w innych językach tablic asocjacyjnych / słowników? Python, C++, Perl. Jakoś we wszystkich występuje.
-------------------- |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wybacz ale na pewno 90% problemów na tym forum wynika tylko i wyłącznie z tego że komuś nie chciało się zajrzeć do dokumentacji. (...) Lenistwa nie popieram więc dlaczego tego jednego zdania się po raz kolejny uczepiłeś? Uciekam z tego tematu, bo robi się niebezpiecznie idiotycznie. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 01:06 |