kostenloser Webspace werbefrei: lima-city


Problem: Mysql Select abfrage GROUP BY?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    Moin zusammen,

    ich habe folgende Problem:

    Ich habe eine Datenbank, wo in zwischen über 20000 Datensätze drin sind und jeden Tag kommen so 50-60 neue dazu.


    Die Tabelle hat 34 Spalten:
    id, City, ……. , Tempertaur, Datum Zeit (list_dt_txt), updated
    19995, Oldenburg, ……. , 10.0 , 2020-01-12 15:00:00 , 2020-01-11 14:05:17
    19996, Oldenburg, ……. , 4.3 , 2020-01-12 15:00:00 , 2020-01-12 13:00:16
    19997, Oldenburg, ……. , 9.9 , 2020-01-14 06:00:00 , 2020-01-12 13:00:16
    19998, Oldenburg, ……. , 10.1 , 2020-01-12 15:00:00 , 2020-01-12 14:00:16
    19999, Oldenburg, ……. , 7.4 , 2020-01-13 10:00:00 , 2020-01-12 14:00:16


    Die id ist aufsteigend und AUTO, updated ist Auto Timestamp on Update

    Die Daten können doppelt vorhanden sein, einig ist id und updated immer anders.


    Jetzt möchte ich die Daten für den Tag 12.11.2020 auflesen, die am aktuellsten sind.

    Sprich die id 19998.

    SELECT id,`list_dt_txt`,`list_main_temp`,`updated` FROM wetter_owm_forecast WHERE updated >= '2020-01-12%' GROUP BY list_dt_txt HAVING updated >= '2020-01-11%' ORDER BY `list_dt_txt` ASC, `updated` DESC


    Mit der Abfrage bekomme ich zwar die Werte angezeigt, jedoch GROUP BY nimmt das erste vorkommen in der Datenbank und nicht das Letzte. Somit sind die Daten nicht aktuell sondern auf einen früheren Stand.


    Wie kann ich den Select umschreiben, dass er immer die aktuellen Daten zieht?

    Ich hoffe ich habe mich verständlich ausgedrückt. :)




    Ich habe noch mal die Datenbank mit Beispiel Daten hier hinterlegt.
    Die Formatierung lassen wir mal außen vor. :)

    CREATE TABLE `wetter_owm_forecast` (
      `id` int(40) NOT NULL,
      `cod` varchar(40) CHARACTER SET latin1 NOT NULL,
      `message` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_id` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_name` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_coord_lon` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_coord_lat` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_country` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_country_population` varchar(40) CHARACTER SET latin1 NOT NULL,
      `city_sys_population` varchar(40) CHARACTER SET latin1 NOT NULL,
      `cnt` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_dt` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_temp` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_temp_min` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_temp_max` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_pressure` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_sea_level` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_grnd_level` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_humidity` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_main_temp_kf` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_weather_id` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_weather_main` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_weather_description` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_weather_icon` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_clouds_all` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_wind_speed` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_wind_deg` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_wind_gust` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_rain_3h` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_snow_3h` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_sys_pod` varchar(40) CHARACTER SET latin1 NOT NULL,
      `list_dt_txt` varchar(40) CHARACTER SET latin1 NOT NULL,
      `timestamp` int(40) NOT NULL,
      `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    --
    -- Daten für Tabelle `wetter_owm_forecast`
    --
    
    INSERT INTO `wetter_owm_forecast` (`id`, `cod`, `message`, `city_id`, `city_name`, `city_coord_lon`, `city_coord_lat`, `city_country`, `city_country_population`, `city_sys_population`, `cnt`, `list_dt`, `list_main_temp`, `list_main_temp_min`, `list_main_temp_max`, `list_main_pressure`, `list_main_sea_level`, `list_main_grnd_level`, `list_main_humidity`, `list_main_temp_kf`, `list_weather_id`, `list_weather_main`, `list_weather_description`, `list_weather_icon`, `list_clouds_all`, `list_wind_speed`, `list_wind_deg`, `list_wind_gust`, `list_rain_3h`, `list_snow_3h`, `list_sys_pod`, `list_dt_txt`, `timestamp`, `updated`) VALUES
    (20981, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579068000', '10.12', '10.12', '10.12', '1003', '1003', '1002', '76', '0', '500', 'Rain', 'Leichter Regen', '10n', '100', '10.65', '212', '', '0.19', '', 'n', '2020-01-15 06:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20982, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579078800', '9.45', '9.45', '9.45', '1004', '1004', '1003', '80', '0', '500', 'Rain', 'Leichter Regen', '10d', '100', '9.6', '210', '', '0.63', '', 'd', '2020-01-15 09:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20983, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579089600', '9.17', '9.17', '9.17', '1005', '1005', '1004', '81', '0', '500', 'Rain', 'Leichter Regen', '10d', '100', '9.44', '212', '', '0.81', '', 'd', '2020-01-15 12:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20984, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579100400', '8.91', '8.91', '8.91', '1007', '1007', '1005', '84', '0', '500', 'Rain', 'Leichter Regen', '10d', '100', '9.02', '221', '', '1.13', '', 'd', '2020-01-15 15:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20985, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579111200', '7.53', '7.53', '7.53', '1010', '1010', '1008', '88', '0', '500', 'Rain', 'Leichter Regen', '10n', '100', '3.62', '257', '', '0.81', '', 'n', '2020-01-15 18:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20986, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579122000', '5.87', '5.87', '5.87', '1013', '1013', '1012', '83', '0', '804', 'Clouds', 'Bedeckt', '04n', '87', '4.97', '231', '', '', '', 'n', '2020-01-15 21:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20987, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579132800', '4.82', '4.82', '4.82', '1016', '1016', '1014', '88', '0', '802', 'Clouds', 'Mäßig bewölkt', '03n', '43', '5.02', '215', '', '', '', 'n', '2020-01-16 00:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20988, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579143600', '4.36', '4.36', '4.36', '1018', '1018', '1016', '91', '0', '800', 'Clear', 'Klarer Himmel', '01n', '0', '5', '217', '', '', '', 'n', '2020-01-16 03:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20989, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579154400', '3.81', '3.81', '3.81', '1019', '1019', '1017', '93', '0', '802', 'Clouds', 'Mäßig bewölkt', '03n', '42', '4.65', '206', '', '', '', 'n', '2020-01-16 06:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20990, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579165200', '4.62', '4.62', '4.62', '1020', '1020', '1018', '88', '0', '802', 'Clouds', 'Mäßig bewölkt', '03d', '47', '5.01', '203', '', '', '', 'd', '2020-01-16 09:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20991, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579176000', '7.6', '7.6', '7.6', '1019', '1019', '1018', '76', '0', '803', 'Clouds', 'Überwiegend bewölkt', '04d', '73', '4.49', '188', '', '', '', 'd', '2020-01-16 12:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20992, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579186800', '6.51', '6.51', '6.51', '1018', '1018', '1016', '81', '0', '804', 'Clouds', 'Bedeckt', '04d', '100', '3.83', '151', '', '', '', 'd', '2020-01-16 15:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20993, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579197600', '5.45', '5.45', '5.45', '1016', '1016', '1015', '90', '0', '804', 'Clouds', 'Bedeckt', '04n', '89', '4.59', '144', '', '', '', 'n', '2020-01-16 18:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20994, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579208400', '6.82', '6.82', '6.82', '1015', '1015', '1013', '87', '0', '804', 'Clouds', 'Bedeckt', '04n', '99', '6.5', '155', '', '', '', 'n', '2020-01-16 21:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20995, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579219200', '7.73', '7.73', '7.73', '1012', '1012', '1010', '79', '0', '804', 'Clouds', 'Bedeckt', '04n', '99', '7.42', '168', '', '', '', 'n', '2020-01-17 00:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20996, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579230000', '8.92', '8.92', '8.92', '1010', '1010', '1008', '76', '0', '804', 'Clouds', 'Bedeckt', '04n', '100', '6.86', '181', '', '', '', 'n', '2020-01-17 03:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20997, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579240800', '8.62', '8.62', '8.62', '1010', '1010', '1008', '88', '0', '500', 'Rain', 'Leichter Regen', '10n', '100', '6.56', '196', '', '1.13', '', 'n', '2020-01-17 06:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20998, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579251600', '9.13', '9.13', '9.13', '1011', '1011', '1009', '91', '0', '500', 'Rain', 'Leichter Regen', '10d', '100', '6.05', '208', '', '0.38', '', 'd', '2020-01-17 09:00:00', 1578833102, '2020-01-12 12:45:02'),
    (20999, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1579262400', '10.28', '10.28', '10.28', '1012', '1012', '1010', '80', '0', '500', 'Rain', 'Leichter Regen', '10d', '100', '5.86', '233', '', '0.25', '', 'd', '2020-01-17 12:00:00', 1578833102, '2020-01-12 12:45:02'),
    (21000, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1578841200', '8.24', '7.66', '8.24', '1014', '1014', '1012', '84', '0.58', '500', 'Rain', 'Leichter Regen', '10d', '100', '9.98', '231', '', '0.25', '', 'd', '2020-01-12 15:00:00', 1578834012, '2020-01-12 13:00:12'),
    (21001, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1578852000', '8.99', '8.56', '8.99', '1016', '1016', '1014', '84', '0.43', '500', 'Rain', 'Leichter Regen', '10n', '100', '7.98', '244', '', '0.38', '', 'n', '2020-01-12 18:00:00', 1578834012, '2020-01-12 13:00:12'),
    (21002, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1578862800', '7.36', '7.07', '7.36', '1017', '1017', '1015', '88', '0.29', '500', 'Rain', 'Leichter Regen', '10n', '91', '6.04', '256', '', '0.19', '', 'n', '2020-01-12 21:00:00', 1578834012, '2020-01-12 13:00:12'),
    (21003, '200', '0', '2857458', 'Oldenburg', '8.2', '53.1667', 'DE', 'D', '', '40', '1578873600', '6.8', '6.65', '6.8', '1019', '1019', '1017', '90', '0.15', '500', 'Rain', 'Leichter Regen', '10n', '90', '5.05', '250', '', '0.12', '', 'n', '2020-01-13 00:00:00', 1578834902, '2020-01-12 13:15:02');
    
    --
    -- Indizes der exportierten Tabellen
    --
    
    --
    -- Indizes für die Tabelle `wetter_owm_forecast`
    --
    ALTER TABLE `wetter_owm_forecast`
      ADD PRIMARY KEY (`id`),
      ADD KEY `id` (`id`);
    
    --
    -- AUTO_INCREMENT für exportierte Tabellen
    --
    
    --
    -- AUTO_INCREMENT für Tabelle `wetter_owm_forecast`
    --
    ALTER TABLE `wetter_owm_forecast`
      MODIFY `id` int(40) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21004;
    COMMIT;


    Gruß
    Daniel
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wieso willst du denn mit GROUP BY arbeiten?
    Du könntest auch einfach einen SELECT machen mit nem WHERE für den aktuellen Tag, nach dem Datum absteigend sortieren und ein LIMIT 1 rein hauen.
    Damit hast du den aktuellsten Datensatz von Tag X.
  4. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    Moin moin.

    Okay, dann hab ich mich nicht verständlich ausgedrückt.
    In der Datenbank sind von heute an bis 5 Tage danach in Stunden Werten Datensätze drin. Diese werden mal aktualisiert mal nicht.

    Ich möchte immer die aktuellen Daten haben.

    Da diese durcheinander gewürfelt sind, kann ich hier nicht mit einer "einfachen" Sortierung arbeiten.

    Gruß
    Daniel

  5. Hi,

    mein Lösungsansatz wäre eine Sub-query, wie in folgendem Thread erläutert:

    https://stackoverflow.com/questions/17327043/how-can-i-select-rows-with-most-recent-timestamp-for-each-key-value

    der Rest ist einfache Anwendung von Logik
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!