Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SELECT, 2 kolumny z jednej
jajoo
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.05.2013

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


Witam mam tabele jak na screenie poniżej, chciałbym zrobić select wyświetlający tabele 4 kolumn, ich zawartość będzie uzależniona od id_przedmiotu a wyświetlane będą dane z kolumny "ocena", czyli w pierwszej kolumnie wyświetlone zostanie 3, 2, 2 w drugiej 5, 3, 5 itd. Jedną kolumnę mogę wyświetlić poprzez
  1. SELECT o.ocena AS "J. polski" FROM oceny AS o WHERE (o.id_przedmiotu=1 AND o.id_ucznia=1)
dalej nie mogę ruszyć.
(IMG:http://oi43.tinypic.com/30ijc0h.jpg)
Go to the top of the page
+Quote Post
sazian
post
Post #2





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


nie bardzo rozumiem
chodzi o SELECT ocena,id_przedmiotu (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
jajoo
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.05.2013

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


Nie, zobacz jakie wartości są w kolumnie id_przedmiotu, są 1,2,3,4 - jak id_przedmiotu jest 1 to ocene wpisuje do kolumny nr 1, jeśli 2 to do kolumny nr 2 jeśli 3 to do kolumny 3 itd tak jak poniżej:

Kolumna nr 1:
3
2
2


Kolumna nr 2:
5
3
5


Kolumna nr 3:
2
4
5


Kolumna nr 4:
5
2
4
Go to the top of the page
+Quote Post
bww
post
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 14.02.2012

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


Wydaje mi się, iż w tym przypadku słowem klucz będzie pivot table. http://en.m.wikibooks.org/wiki/MySQL/Pivot_table
Go to the top of the page
+Quote Post
jajoo
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 14.05.2013

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


Witam po małej przerwie wróciłem do swojego programu, otóż mam taką tabelę:
(IMG:http://i43.tinypic.com/awvldu.png)

Chcę zrobić analogicznie do tego: (źródło: http://en.m.wikibooks.org/wiki/MySQL/Pivot_table)

Cytat
mysql> select * from exams;
+------+------+------+-------+
| pkey | name | exam | score |
+------+------+------+-------+
| 1 | Bob | 1 | 75 |
| 2 | Bob | 2 | 77 |
| 3 | Bob | 3 | 78 |
| 4 | Bob | 4 | 80 |
| 5 | Sue | 1 | 90 |
| 6 | Sue | 2 | 97 |
| 7 | Sue | 3 | 98 |
| 8 | Sue | 4 | 99 |
+------+------+------+-------+
8 rows in set (0.00 sec)

mysql> select name,
sum(score*(1-abs(sign(exam-1)))) as exam1,
sum(score*(1-abs(sign(exam-2)))) as exam2,
sum(score*(1-abs(sign(exam-3)))) as exam3,
sum(score*(1-abs(sign(exam-4)))) as exam4
from exams group by name;

+------+-------+-------+-------+-------+
| name | exam1 | exam2 | exam3 | exam4 |
+------+-------+-------+-------+-------+
| Bob | 75 | 77 | 78 | 80 |
| Sue | 90 | 97 | 98 | 99 |
+------+-------+-------+-------+-------+
2 rows in set (0.00 sec)


u mnie score to "ocena" a exam to "id_przedmiotu". Zatem mój kod:
Cytat
select
sum(ocena*(1-abs(sign(id_przedmiotu-1)))) as "Język polski",
sum(ocena*(1-abs(sign(id_przedmiotu-2)))) as "Matematyka",
sum(ocena*(1-abs(sign(id_przedmiotu-3)))) as "Historia",
sum(ocena*(1-abs(sign(id_przedmiotu-4)))) as "Informatyka"
from oceny group by id


Daje wynik:
(IMG:http://i40.tinypic.com/k9gf0n.png)

Chciałbym żeby pola ocena były jako varchar, teraz są int, i chciałbym w ten sam sposób wyświetlić tabelę jak w przykładzie wyżej, tylko z tekstem typu "3, 4, 5, 3, 1, 5, 2" czyli zamiast liczb teksty.


********************************************************************

EDIT:

Grupowałem po id zamiast po id_ucznia

select
sum(ocena*(1-abs(sign(id_przedmiotu-1)))) as "Język polski",
sum(ocena*(1-abs(sign(id_przedmiotu-2)))) as "Matematyka",
sum(ocena*(1-abs(sign(id_przedmiotu-3)))) as "Biologia",
sum(ocena*(1-abs(sign(id_przedmiotu-4)))) as "Historia"
from oceny group by id_ucznia

Działa, teraz pytanie jak zrobić ten sam efekt ale przy zmianie typu pól "ocena" z int na varchar i wypełnienie tych pól znakami np. "aaa" "bbb" itd?

Ten post edytował jajoo 22.05.2013, 21:47:11
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: 15.09.2025 - 11:30