![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam takie oto zapytanie do MySQL:
I tutaj jest moje pytanie. Ponieważ pole 'clname' ma dane zapisane w formacie typu: 1IB, 3EN (tak jak to klasy szkolne). natomiast pole gdzie jest $data2, jest to statystyka, w sensie są tam jakieś punkty. I teraz takie moje pytanie. Jak zmodyfikować owe zapytanie, by pobierało np. wszystkie klasy pierwsze, oraz sumowało ich statystyke? (teo $data2, który np. przyjmuje wartość 'firsthalf'). Edit: Wiem że mógłbym to zrobić za pomocą LIKE, aczkolwiek wiem też iż jest ona niewydajna i w miarę możliwości chciałbym jej uniknąć. Ten post edytował Arhimenrius 24.05.2012, 10:40:01 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dobrze zrozumiałem to powinno zadziałać
![]()
//edit Gorzej jeżeli masz więcej niż 10 klas, wówczas warunek '1%' będą spełniały klasy '11B','12AIF' itd. Ten post edytował d3ut3r 24.05.2012, 10:42:25 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
12AF nie jest możliwe, no, są to klasy szkolne, czyli od 1 do 4
![]() Tak wygląda po zmodyfikowaniu.
Jednak jest problem, ponieważ wyrzuca mi takowy błąd: Cytat Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1140 Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause' in Pierwszy raz mam tego typu error, przez co nie mam pojęcia co zrobić i jak zareagować. Ten post edytował Arhimenrius 24.05.2012, 14:11:53 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
jak wygląda tabela class i zapytanie z podstawioną wartością zamiast zmiennej ?
-------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
clid int(8) UNSIGNED Nie auto_increment
clname varchar(20) utf8_general_ci Nie rank_september int(8) UNSIGNED Nie 0 rank_october int(8) UNSIGNED Nie 0 rank_november int(8) UNSIGNED Nie 0 rank_december int(8) UNSIGNED Nie 0 rank_january int(8) UNSIGNED Nie 0 rank_february int(8) UNSIGNED Nie 0 rank_march int(8) UNSIGNED Nie 0 rank_april int(8) UNSIGNED Nie 0 rank_may int(8) UNSIGNED Nie 0 rank_june int(8) UNSIGNED Nie 0 firsthalf int(11) UNSIGNED Nie 0 secondhalf int(11) UNSIGNED Nie 0 stat_year int(11) UNSIGNED Nie 0 rank_today tinyint(4) Tak wygląda tabela Class $klasa = $db -> prepare("SELECT `clname`,SUM(`secondhalf`) AS suma FROM `class` WHERE `clname` LIKE '1%' "); a tak zapytanie Ten post edytował Arhimenrius 24.05.2012, 14:19:07 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czemu nie czytacie komunikatu błędu? Obydwoje.
Czemu nie zajrzycie w google/manual? Obydwoje. PRzecież to jest 10 sekund roboty.... http://dev.mysql.com/doc/refman/5.1/en/ser...y_full_group_by -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
coś takiego powinno zadziałać
@nospor nie krzycz ![]() ![]() Ten post edytował d3ut3r 24.05.2012, 14:29:57 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zwraca piękne: bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
teraz to już średnio rozumiem
![]() mój przykład odnosił się do testów na takie tabeli i danych:
zapytanie:
zwraca: Kod clname|suma 1a 12 1b 20 1c 13 1e 5 1ef 3 1ne 10 kod php
Ten post edytował d3ut3r 24.05.2012, 14:48:49 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Tak wygląda baza danych. Co do kodu:
Chodzi o to że potem mam otrzymać tabelkę: Poziom klasy | ilosc wypozyczonych | srednia na ucznia 1 | ilosc | ilosc 2 | ilosc | ilosc 3 | ilosc | ilosc itd Ten post edytował Arhimenrius 24.05.2012, 14:56:27 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
2 rzeczy
1. Dodaj jakąś klasę pierwszą ![]() 2. Po co to zapytanie w pętli ? 10 razy wykonujesz to samo. -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
ponieważ potrzebuję wykonać to do wszystkich poziomów klas, a zakładam że nie tylko dla technikum to będzie ale też dla podstawówki, a nie wiadomo jak się zmieni edukacja
![]() Zastosowałem to $i, by dla każdej klasy zliczało, już ładnie wyrzuca:
EDIT: To jednak dalej nie działa poprawnie. Stworzyłem sobie drugą klasę drugą i przy zapytaniu:
wychodzi w MySQL: Cytat clname suma 2IA 4 2IB 3 a zależy mi wy wyszedł 1 rekord z sumą obu liczb ( w tym przypadku: 7) Ten post edytował Arhimenrius 25.05.2012, 09:39:54 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
to w takim razie w ogóle Cię nie zrozumiałem ....
czyli jeszcze raz zapytanie:
wyświetli Ci sumę kolumny secondhalf dla wszystkich klas zaczynających się od 4 jeżeli to o to Ci chodziło to nie potrzeba, żadnego grupowania itp. -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie nie chcę by wypisywało wszystkie 4 klasy.
Potrzebuję by zamiast: 3IA - 8 3IB - 9 itd... Wyszło: 3 - 17 Czy coś w tym stylu. Ma mi wynik wszystkich klas 3 złączyć do 1 pola które wypiszę. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
czyli dla tych danych:
zapytanie
zwróci 24 (mamy dwie klasy drugie każda ma secondhalf=12 czyli suma to 24) o to chodziło ? -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 3 Dołączył: 19.04.2011 Ostrzeżenie: (0%) ![]() ![]() |
dokładnie
![]() ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 04:39 |