Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ Grupowanie wyników po id z ostatnią datą

Napisany przez: Wilu88 3.05.2014, 12:20:52

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

Napisany przez: mmmmmmm 3.05.2014, 20:17:52

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

Napisany przez: #luq 4.05.2014, 08:30:01

Jak wyżej, ale z opisu mogę przypuszczać, że zamiast GROUP BY powinieneś użyć DISTINCT do wyciągania unikatowych rekordów

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)