Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Problem z zapytaniem i GROUP BY
maniak11
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.03.2006
Skąd: Sosnowiec

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


Witam, mam spory problem z zapytaniem SQL, do tego stopnia ,że nie wiem czy jest to wykonalne, mianowicie mam zapytani:

kolumny
sub_id, opis_id, waga, srednia
2, 15, 30, 2.08
2, 16, 40, 1.16
3, 18, 20, 2.45
2, 20, 25, 2.01

przy czym kolumna 'srednia' jest wynikiem zapytania (AVG(points)*(waga/100) ) as srednia
a potem grupowanie po: GROUP BY sub_id, opis_id

i teraz pytanie: da się zrobić to zapytanie tak aby wartośći "srednia" były zsumowane wszędzie tam gdzie "sub_id" jest identyczne? Czyli wyników będzie tyle ile jest różnych "sub_id"

W tym przypadku powinno być coś takiego:

sub_id, opis_id, waga, srednia
2,'cokolwiek','cokolwiek', 5,25 (2,08+1,16+2,01)
3, 'cokolwiek','cokolwiek',2,45

Jak dam samo GROUP BY sub_id to "srednia" nie bedzie prawidlowa

Czy da się zrobi coś takiego? Siedzę nad tym już 3h i wymiękam powoli:(

Ten post edytował maniak11 9.07.2008, 13:07:44
Go to the top of the page
+Quote Post
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Użyj funkcji SUM
  1. SELECT sub_id, opis_id, waga, SUM(srednia) AS srednia FROM tabela GROUP BY sub_id
Go to the top of the page
+Quote Post
maniak11
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.03.2006
Skąd: Sosnowiec

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


Gdyby to było takie proste to bym nawet nie pisał tutaj, ale dzięki i tak za pomoc.

Chodzi o to że taki wynik jaki napisałem jest tylko i wyłącznie w przypadku jak użyje GROUP BY sub_id, opis_id, ehh no nic, będę musiał się jeszcze sporo namordować z tym czuje coś.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Musisz uzyc podzapytanie.
Zapytanie głowne będzie sumowac srednie, a srednie beda wyliczane wlasnie w podzapytaniu
Go to the top of the page
+Quote Post
piotrooo89
post
Post #5


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




możesz napisać jak ty to robisz. tzn jak wyświetlasz te rekordy to może coś będzie można pomóc i podaj kolumny w tabeli

Ten post edytował piotrooo89 9.07.2008, 20:14:13
Go to the top of the page
+Quote Post
artega
post
Post #6





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Być może ten przykład coś rozjaśni.
  1. SELECT sub_id, opis_id, waga, SUM((SELECT AVG(points)*(waga/100) FROM tabela t2 WHERE t2.id=t1.id)) FROM tabela t1 GROUP BY sub_id
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




@artega chodzilo mi, by te podzapytanie bylo we from a nie w sum.
No chyba ze ci dziala.
Go to the top of the page
+Quote Post
artega
post
Post #8





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

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


Cytat
@artega chodzilo mi, by te podzapytanie bylo we from a nie w sum.
No chyba ze ci dziala.

Działa, poprawnie składniowe a nawet wyniki poprawne (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tylko czy zgodnie z ideą maniak11?
Go to the top of the page
+Quote Post
maniak11
post
Post #9





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.03.2006
Skąd: Sosnowiec

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


Dzięki wszystkim za pomoc, musiałem rozwiązać to za pomocą php, choć zapewne działa to ciut wolniej bo z tego co wiem silnik bazodanowy znacznie szybciej przetwarza dane niż php. Dzięki i tak za pomoc wszystkim.

Pozdrawiam
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: 22.12.2025 - 23:19