Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

Wyświetlanie danych po zgrupowaniu tabel

Zdecydowałeś się na tworzenie interaktywnych stron przy pomocy PHP? Chcesz w łatwy i szybki sposób zarządzać danymi na swojej stronie? Tutaj znajdziesz pomoc w napotkanych przy tym trudnościach.

Wyświetlanie danych po zgrupowaniu tabel

Post 09.01.2017, 13:26:42

Witam jestem początkujący i mam taki problem:
Tabela trasa:
id_trasy | id_auto | data
1 | WA2232 | 11-11-2016
2 | WA2232 | 10-11-2016
3 | CD5785 | 15-11-2016

oto moja funkcja która wyświetla wszystkie rekordy i grupuje.
Kod: Zaznacz cały
function get_news(){
      if($result = $this->db->query('SELECT * FROM auto AS a left outer JOIN trasa AS t USING (id_auto) LEFT OUTER JOIN status AS s ON a.id_stan=s.id_status  GROUP BY t.id_auto')){
         $return = '';
         while($r = $result->fetch_object()){
            $return .= '<p>id: '.$r->id_trasy.' | '.htmlspecialchars($r->id_auto).'</p>';
            $return .= '<hr/>';
         }
         return $return;
      }
   }


chciałbym uzyskać taki efekt:
2 WA2232 - 11-11-2016, 10-11-2016
3 CD5785 - 15-11-2016

proszę o pomoc,
lukelis_pl
Posty: 3
Dołączył(a): 19.12.2016

Re: Wyświetlanie danych po zgrupowaniu tabel

Post 09.01.2017, 22:35:07

Zapytaniem SQL nie da się czegoś takiego osiągnąć. Najprościej będzie po prostu wyciągnąć wszystkie rekordy posortowane według id_auto i daty, a następnie w skrypcie odpowiednio formatować wynik (wyświetlać id_auto tylko raz, a potem wszystkie daty tak długo, aż id_auto się zmieni).
Avatar użytkownikatoszcze
Bartosz Romanowski

SuperGod
SuperGod

Posty: 8879
Dołączył(a): 14.10.2003
Lokalizacja: Mysłowice

Re: Wyświetlanie danych po zgrupowaniu tabel

Post 09.01.2017, 23:26:46

W MySQL da się coś (mniej-więcej) takiego osiągnąć

Kod: Zaznacz cały
SELECT `id_trasy`, `id_auto`, group_concat(`data` SEPARATOR ', ') AS daty GROUP BY id_auto;

różnica - w moich testach - jest w id_trasy. Ty pokazałeś, że ma być "2", u mnie wyszło "1", ale żeby móc cokolwiek zmienić musiałbys mi wytłumaczyć dlaczego wyciągnąłeś "2" a nie "1".
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19504
Dołączył(a): 14.04.2002

Re: Wyświetlanie danych po zgrupowaniu tabel

Post 11.01.2017, 00:58:14

@kuku: Fakt - jakoś mi to umknęło. Osobiście korzystałem z tej funkcji dosłownie raz - aż przekonałem się, że jej wynik ma ograniczenie długości (domyślnie do 1024 znaków). ;)
Avatar użytkownikatoszcze
Bartosz Romanowski

SuperGod
SuperGod

Posty: 8879
Dołączył(a): 14.10.2003
Lokalizacja: Mysłowice

Re: Wyświetlanie danych po zgrupowaniu tabel

Post 11.01.2017, 10:37:16

toszcze napisał(a):aż przekonałem się, że jej wynik ma ograniczenie długości (domyślnie do 1024 znaków). ;)

faktycznie, w dokumentacji wszystko jest, można zmienić ten limit jeśli się ma możliwość majstrowania w środowisku. W takim wypadku autor pytania musi sam ustalić, czy to ograniczenie jest lub nie dla niego problemem.
Avatar użytkownikakuku
Rafał Kukawski

+∞
+∞

Posty: 19504
Dołączył(a): 14.04.2002


Powrót do PHP i bazy danych


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 4 gości

Hosting, Domeny, SSL
iCash

Subskrypcja

Mamy 50052 zarejestrowanych użytkowników.
Najnowszy użytkownik: AundreaS


Nasi użytkownicy napisali:

  • 934675 wiadomości
  • w 246206 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)