Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Grupowanie wyników po id z ostatnią datą
Forum PHP.pl > Forum > Bazy danych > MySQL
Wilu88
Witam

mam pewien problem którego nie potrafię kurcze rozwiązać :/

Otóż potrzebuje pobrać dane o licznikach wpisywanych codziennie do bazy danych tabela z licznikami wygląda następująco:
licznik_id | licznik_data | licznik_id_ksero | licznik_wartosc

Do tej tabeli co meisiac dodawane są rekordy z id urządzenia aktualna data no i wiadomo wartość

Teraz potrzebuje pobrać listę z grupowanych rekordów z urządzeniami które jeszcze nie maja wpisu z tego danego miesiąca. Czyli zapytanie pobiera wszystkie urządzenia z bazy następnie sprawdza których nie ma w tabeli z licznikami lub ich data jest mniejsza niż dzisiejsza. Problem w tym ze jeżeli robię GROUP BY licznik_id_ksero to po zgrupowaniu w polu licznik_data mam najmniejsza datę która wystąpiła w bazie dla danego id.

  1. SELECT * FROM swps_ksero LEFT JOIN swps_liczniki ON licznik_id_ksero = ksero_id LEFT JOIN swps_klienci ON klient_id = ksero_id_klient WHERE ksero_umowa = "2" AND MONTH(licznik_data) != MONTH(CURDATE()) GROUP BY licznik_id_ksero
mmmmmmm
Zapytanie jest wzięte z d...
  1. SELECT * FROM swps_ksero LEFT JOIN swps_liczniki ON licznik_id_ksero = ksero_id LEFT JOIN swps_klienci ON klient_id = ksero_id_klient AND MONTH(licznik_data) = MONTH(CURDATE()) AND YEAR(licznik_data) = YEAR(CURDATE()) WHERE ksero_umowa = "2" AND swpa_liczniki.licznik_ksero_id IS NULL
#luq
Jak wyżej, ale z opisu mogę przypuszczać, że zamiast GROUP BY powinieneś użyć DISTINCT do wyciągania unikatowych rekordów
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.