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
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


teraz to już średnio rozumiem (IMG:style_emoticons/default/smile.gif)

mój przykład odnosił się do testów na takie tabeli i danych:
  1.  
  2. CREATE TABLE IF NOT EXISTS `class` (
  3. `clname` varchar(20) NOT NULL,
  4. `secondhalf` int(11) NOT NULL,
  5. `clid` int(11) NOT NULL AUTO_INCREMENT,
  6. PRIMARY KEY (`clid`)
  7. );
  8.  
  9. INSERT INTO `class` (`clname`, `secondhalf`, `clid`) VALUES
  10. ('1b', 10, 1),
  11. ('2b', 12, 2),
  12. ('1e', 5, 3),
  13. ('4e', 2, 4),
  14. ('1ef', 3, 5),
  15. ('2b', 12, 6),
  16. ('1a', 12, 7),
  17. ('1c', 13, 8),
  18. ('3a', 5, 9),
  19. ('1ne', 10, 10),
  20. ('1b', 10, 11);
  21.  


zapytanie:
  1. SELECT `clname`,SUM(`secondhalf`) AS suma FROM `class` WHERE `clname` LIKE '1%' GROUP BY clname


zwraca:
Kod
clname|suma
1a         12
1b          20
1c         13
1e         5
1ef         3
1ne         10


kod php
  1. $st=$pdo->prepare("SELECT `clname` , SUM( `secondhalf` ) AS suma FROM `class` WHERE `clname` LIKE '1%' GROUP BY clname");
  2. $st->execute();
  3. $data=$st->fetchAll(PDO::FETCH_ASSOC);
  4. print_r($data);
  5.  
  6. /*
  7. To zwróci:
  8. Array
  9. (
  10.   [0] => Array
  11.   (
  12.   [clname] => 1a
  13.   [suma] => 12
  14.   )
  15.  
  16.   [1] => Array
  17.   (
  18.   [clname] => 1b
  19.   [suma] => 20
  20.   )
  21.  
  22.   [2] => Array
  23.   (
  24.   [clname] => 1c
  25.   [suma] => 13
  26.   )
  27.  
  28.   [3] => Array
  29.   (
  30.   [clname] => 1e
  31.   [suma] => 5
  32.   )
  33.  
  34.   [4] => Array
  35.   (
  36.   [clname] => 1ef
  37.   [suma] => 3
  38.   )
  39.  
  40.   [5] => Array
  41.   (
  42.   [clname] => 1ne
  43.   [suma] => 10
  44.   )
  45.  
  46. )
  47. */


Ten post edytował d3ut3r 24.05.2012, 14:48:49
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 - 10:55