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.
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
Zapytanie jest wzięte z d...
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
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)