Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Szukanie pozczegolnego znaku w MySQL
Arhimenrius
post
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:
  1. $klasa = $db -> prepare("SELECT `clname`, `$data2` FROM `class");


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Arhimenrius
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


  1. CREATE TABLE `class` (
  2. `clid` int(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `clname` varchar(20) NOT NULL,
  4. `rank_september` int(8) UNSIGNED NOT NULL DEFAULT '0',
  5. `rank_october` int(8) UNSIGNED NOT NULL DEFAULT '0',
  6. `rank_november` int(8) UNSIGNED NOT NULL DEFAULT '0',
  7. `rank_december` int(8) UNSIGNED NOT NULL DEFAULT '0',
  8. `rank_january` int(8) UNSIGNED NOT NULL DEFAULT '0',
  9. `rank_february` int(8) UNSIGNED NOT NULL DEFAULT '0',
  10. `rank_march` int(8) UNSIGNED NOT NULL DEFAULT '0',
  11. `rank_april` int(8) UNSIGNED NOT NULL DEFAULT '0',
  12. `rank_may` int(8) UNSIGNED NOT NULL DEFAULT '0',
  13. `rank_june` int(8) UNSIGNED NOT NULL DEFAULT '0',
  14. `firsthalf` int(11) UNSIGNED NOT NULL DEFAULT '0',
  15. `secondhalf` int(11) UNSIGNED NOT NULL DEFAULT '0',
  16. `stat_year` int(11) UNSIGNED NOT NULL DEFAULT '0',
  17. `rank_today` tinyint(4) NOT NULL,
  18. PRIMARY KEY (`clid`)
  19. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  20.  
  21. --
  22. -- Zrzut danych tabeli `class`
  23. --
  24.  
  25. INSERT INTO `class` VALUES (1, '3IB', 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 6, 6, 6);
  26. INSERT INTO `class` VALUES (2, '2A', 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4);
  27.  


Tak wygląda baza danych.
Co do kodu:
  1. for($i=1;$i<10;$i++) //pętla(za dawnych czasów było 8 klas, więc lepiej zastosować 9, tak ejst w aplikacji w mojej szkole <<na niej się wzoruję>>
  2. {
  3. // SELECT `clname`,SUM(`inna_kolumna`) AS suma FROM `class` WHERE `clname` LIKE '1%';//chce wczytac klase (a pętla <<$i>> zwieksza klase o 1.
  4. $klasa = $db -> prepare("SELECT `clname`,SUM(`$data2`) AS suma FROM `class` WHERE `clname` LIKE '1%' GROUP BY clname");
  5. $klasa -> execute();//tutaj chce sprawdzic ilu jest uczniów w klasach o tym poziomie (potrzebne do obliczania średniej, nie ważne póki co, z tym dam rady).
  6. $daj = $klasa -> fetch(PDO::FETCH_ASSOC);
  7. var_dump($daj);//i standardowo wypisanie
  8. //$ileosob = $db -> query("SELECT COUNT(*) FROM `users` WHERE `usclass` LIKE '$i%'");
  9. echo $daj['suma'];
  10. }


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
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 18:10