Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak wyświetlić dane z jednej kolumny w kilku
ostry400
post 30.05.2012, 15:50:05
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 9.04.2012

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


Witam

Mam mały problem mam w bazie

jak zrobić żeby posortować te wyniki w kolumnach.
mam taką tabelkę w bazie

  1. id czas ile
  2.  
  3. 299 00:00:00 1
  4. 284 00:00:02 1
  5. 279 00:00:05 1
  6. 299 00:00:19 2
  7. 284 00:00:22 2
  8. 279 00:00:24 2
  9. 299 00:00:30 3
  10. 284 00:00:35 3
  11. 279 00:00:39 3


i tak dalej id jest ok 1tyś a wyników ok 3tyś

Teraz jak zrobić żeby wyszło mi to w kolumnach przypisując się id np 299 i wszystkie 3 czasy tego id czyli :

  1. id czas 1 czas2 czas3
  2.  
  3. 299 00:00:00 00:00:19 00:00:30
  4. 284 00:00:02 00:00:22 00:00:35
  5. 279 00:00:05 00:00:24 00:00:39
  6.  
  7.  


Wiem jak to poustawiać i wyświetlić w php w sposób następujący ale niestety nie może tak być
  1. id czas ile
  2. 299 00:00:00 1
  3. 299 00:00:19 2
  4. 299 00:00:30 3
  5. 284 00:00:02 1
  6. 284 00:00:22 2
  7. 284 00:00:35 3
  8. 279 00:00:05 1
  9. 279 00:00:24 2
  10. 279 00:00:39 3


operacje łączenia tabel i wyświetlania w php na stronach mam opanowane ale tego nigdzie nie mogę znaleźć

Później będe jeszcze sobie odejmował te wyniki aby liczyć międzyczasy ale myślę że z tym problemu nie będzie

Chodzi mi o jakiś pomysł jak to zrobić albo jakieś sugestie kodu do Mysql questionmark.gif

Jest w stanie mi ktoś pomóc questionmark.gif

Pozdrawiam

Ten post edytował ostry400 30.05.2012, 15:52:21
Go to the top of the page
+Quote Post
Firebright
post 30.05.2012, 17:47:52
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 3
Dołączył: 19.01.2011

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


Spróbuj wykorzystać funkcję GROUP_CONCAT(), np:
  1. SELECT id, GROUP_CONCAT(czas) AS czasy
  2. FROM czasy
  3. GROUP BY id

Co prawda nie jest to dokładnie to co napisałeś, ale dostaniesz poszczególne czasy w jednej kolumnie po przecinku. Można napisać zapytanie, które wyciągnie dane tak jak potrzebujesz ale będzie mniej wydajne i ograniczone ilością kolumn.
Go to the top of the page
+Quote Post
ostry400
post 30.05.2012, 22:14:49
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 9.04.2012

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


No dobre dobre ale w tej jednej kolumnie jak mi to wszystko wywali to niestety są wyniki nie po kolei i niema jak tego posegregować sad.gif

Chyba będę musiał zrobić trochę na piechotę czyli

stworze sobie 3 tabele do wszystkich wrzucę to samo i powyciągam z 1 tabeli wyniki oznaczone 1 z 2 tabeli oznaczone 2 i z 3 tabeli oznaczone 3 tongue.gif +dołożę tabele z danymi które ukryte są za tymi numerami ... wyświetlę to i będzie tongue.gif gorzej jak przyjdzie mi zrobić 10 tabel tongue.gif

chyba że jeszcze ktoś ma jakiś pomysł questionmark.gif
Go to the top of the page
+Quote Post
Firebright
post 31.05.2012, 06:36:54
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 3
Dołączył: 19.01.2011

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


Można posortować smile.gif:
  1. SELECT id, GROUP_CONCAT(czas) AS czasy
  2. FROM (SELECT id, czas FROM czasy ORDER BY id, czas) cz
  3. GROUP BY id
Go to the top of the page
+Quote Post
maly_swd
post 31.05.2012, 10:00:28
Post #5





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


  1. SELECT c1.id, c1.czas AS czas1, c2.czas AS czas2, c3.czas AS czas3 FROM czasy c1
  2. JOIN czasy c2 ON c1.id=c2.id AND c2.ile=2
  3. JOIN czasy c3 ON c1.id=c3.id AND c3.ile=3
  4. WHERE c1.ile=1


Ten post edytował maly_swd 31.05.2012, 10:05:42


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post
ostry400
post 13.06.2012, 14:46:38
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 9.04.2012

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


Odkopię trochę swój temat

Jak można by było zmienić ten kod żeby wyświetlił jakiekolwiek wyniki jeśli niema np c3.ile=3 po prostu go jeszcze niema ale za kilka min np się pojawi ale do tej pory chciałbym oglądać posortowane te 2 kolumny.

Bo jeśli go niema to nic się nie wyświetli

Czyli do bazy wpadają nowe wyniki i jak będzie np ile=3 to się zaczynają pojawiać wyniki ale do puki nie pojawi się to 3 to nic nie będzie widoczne.

Czy da radę coś takiego zrobić w prosty sposób pod Myslq czy lepiej ugryźć to z pod php questionmark.gif i zrobić pętle questionmark.gif

Ten post edytował ostry400 13.06.2012, 14:53:03
Go to the top of the page
+Quote Post
maly_swd
post 14.06.2012, 15:34:41
Post #7





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


zamiast
JOIN czasy c3 ON c1.id=c3.id AND c3.ile=3
daj
LEFT JOIN czasy c3 ON c1.id=c3.id AND c3.ile=3

Ten post edytował maly_swd 14.06.2012, 15:35:41


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 14:00