Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodanie brakujących rekordów
Forum PHP.pl > Forum > Przedszkole
Mega_88
Cześć, może mi ktoś podpowiedzieć jak mogę zrobić następującą rzecz. Mam tablę gdzie jest między innymi pole date='YYYY-MM-DD' i potrzebuję uzupełnić tabelę od ustalonej daty do dnia dzisiejszego o rekordy z datą, która nie występuje, a pozostałe rekordy mają być puste (NULL / 0 ). Dla przykłady mamy:

  1. id | date | name | price
  2. 1 | 2019-11-02 | Nazwa 1 | 100
  3. 2 | 2019-11-04 | Nazwa 2 | 200
  4. 3 | 2019-11-08 | Nazwa 3 | 150
  5. 4 | 2019-11-26 | Nazwa 1 | 100
  6. 5 | 2019-11-28 | Nazwa 1 | 100 (DZISIAJ)

I potrzebuję uzupełniać braki za każdym razem jak nie będzie rekordu poniżej dnia obecnego
  1. 6 | 2019-11-01 | NULL | 0
  2. 7 | 2019-11-03 | NULL | 0
  3. 8 | 2019-11-05 | NULL | 0
  4. itd


Potrzebuję zapytanie SQL + ewentualnie PHP, który będzie takie braki uzupełniać od dnia 2019-01-01
Tomplus
Taki kod uzupełni Ci tabelę na dni na cały rok.
  1. INSERT INTO mytable (date)
  2. SELECT
  3. DATE_ADD('2019-01-01', INTERVAL t.n DAY)
  4. FROM (
  5. SELECT
  6. a.N + b.N * 10 + c.N * 100 AS n
  7. FROM
  8. (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
  9. ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
  10. ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7) c
  11. ORDER BY n
  12. ) t
  13. WHERE
  14. t.n <= TIMESTAMPDIFF(DAY, '2019-01-01', '2019-12-31');


źródło: https://stackoverflow.com/questions/2549394...rom-an-interval
Mega_88
Dokładnie o to mi chodziło ! Dziękuje !

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.