![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 22.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam tabele w której nagłówki są następujace: id_tabeli, adres_licznika, nr_licznika, stan_licznika, data_odczytu Na jednym adresie istnieją dwa lub cztery liczniki które w tym samym okresie mają zapisane jakieś stany. Zwykły Select * From tab_odczyty Where data_odczytu=2007-11-30 generuje mi następujące zestawienie: ul. Cicha 15, 667788, 456, 2007-11-30 ul. Cicha 15, 667799, 345, 2007-11-30 ul. Straszna 1, 441122, 145, 2007-11-30 ul. Straszna 1, 441133, 195, 2007-11-30 ul. Straszna 1, 441144, 305, 2007-11-30 ul. Straszna 1, 441155, 45, 2007-11-30 ... Oczywiście chodzi mi o prezentacje w przegladarce na stronie internetowej. Jednak chciałbym uzyskać coś takiego: ul. Cicha 15 667788, 456, 2007-11-30 667799, 345, 2007-11-30 ul. Straszna 1 441122, 145, 2007-11-30 441133, 195, 2007-11-30 441144, 305, 2007-11-30 441155, 45, 2007-11-30 Nie mam zielonego pojęcia jak to zrobić. Proszę o pomoc jeśli ktoś ma jakiś pomysł. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 045 Pomógł: 5 Dołączył: 8.11.2004 Skąd: trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Może
GROUP BY (adres_licznika) a dla reszty pól agrgacja w postaci Array_toString |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Oprócz GROUP BY zastosuj jeszcze GROUP_CONCAT
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 22.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jak zrobie samo GROUP BY to sortuje wg adresu ale tylko z jednym licznikiem, drugiego licznika nie ma. Nie wiem co znaczy agrgacja w postaci Array_toString.
Funkcji GROUP_CONCAT nie potrafię zastosować. Pytałem w google ale z tamtych podpowiedzi też nie za wiele się dowiedziałem. Proszę rozwińcie troszkę Wasze podpowiedzi. Dzięki P.S. Moja wersja MySQL 3.23.58 czyli z tego co czytałem GROUP_CONCAT nie działa. Ten post edytował yacho1977 28.11.2007, 21:48:26 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Ale masz starą wersję bazy danych. W takim razie proponuję wykonać prawie to samo zapytanie co podałeś na początku:
ale wyniki zapisywać w tabeli, w której indeksem jest pole adresu i później wyświetlić wyniki, czyli coś w stylu:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 22.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
w phpmyadmin po wpisaniu SELECT-a otrzymuje:
adres_licznika dane doniecka 1a/7 1111111111, 10, 2007-12-01 doniecka 1a/7 2222222222, 50, 2007-12-01 A po wstawieniu do skryptu php otrzymuje: doniecka 1a/7 2222222222, 50, 2007-12-01 Pokazuje tylko jeden licznik na adresie a powinien pod adresem pokazac obydwa (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (( Ten post edytował yacho1977 1.12.2007, 22:59:47 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Może źle przepisałeś? W wierszu 7. jest '.=' a nie '='. Jakie wyniki otrzymujesz dla trzech odczytów z tym samym adresem?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 22.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Raczej źle nie przepisałem bo skopiowałem poprostu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) Dla trzech odczytów dla danego adresu otrzymuje tylko ostatni wpis w tabeli (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przepraszam, mój błąd. Zamiast:
Kod if(isset($odczyty[$result['adres_licznika']])) { ma być: Kod if(isset($odczyty[$row['adres_licznika']])) {
Ten post edytował BaN 2.12.2007, 20:22:44 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 22.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
SUPER (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ))) o to chodziło. Wielkie dzięki. Działa pięknie!!!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:42 |