Ontbrekende waarden

  • Hey allen,


    Ik heb het volgende probleem. Ik heb een database met tegen de 3 miljoen records, die allemaal een ID hebben en gemerkt zijn met een datum en een user-id. Stel nu dat ik de afgelopen week wil controleren of er inderdaad 7 resultaten zijn, dan gebruik ik deze:

    PHP
    SELECT COUNT(*) AS `rijen` FROM `allelogs`
     WHERE YEARWEEK(`date`) = YEARWEEK(CURRENT_DATE - INTERVAL 7 DAY) 
    AND user_id = 1


    Uitkomst: 7
    Helaas heb je dan weleens dat er een externe storing was, waardoor er gegevens missen. Dan krijg je, als je met de vorige query de gegevens ophaalt, het volgende:


    PHP
    id 	date Aflopend
    2601954	2011-06-18
    2532173	2011-06-17
    2459553	2011-06-16
    2386393	2011-06-15
    2247134	2011-06-13
    2173732	2011-06-12


    Zoals je ziet, mist de 14de. Is er een manier om deze OF in MySQL OF in PHP al toe te voegen, al is het met "null"-waardes? Met andere woorden: Kan ik 'm naast een andere reeks zetten (12 tot en met 18) waarna hij de verschillen ziet en automagisch toevoegd? Het ID maakt daarna overigens niet meer uit; dat wordt niet meer gebruikt.


    Hoop dat het duidelijk is :)


    Groet,


    Jannick

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Dat weet ik. Ik zou niet om een oplossing vragen als ik het zelf handmatig kan doen. Dan ben ik (met circa 43000 situaties) nog niet snel klaar. Vandaar de vraag of het in een MySQL-query of in PHP kan, systematisch.

  • Dan zou je over al deze gegevens moeten loopen en kijken of je een datum mist en deze vervolgens invoeren. Al zou ik als server beheerder niet blij zijn als je in één keer 3 miljoen records ging controleren. Daarom moet je even met de LIMIT werken, een stuk of 100 duizend per keer zou ik doen.

  • zwpgangster als ik WIST wat de criteria waren en hoe ik dat in een MySQL query had kunnen verwoorden, dan had ik dit topic niet gemaakt. En een update voor ontbrekende rijen gaat niet werken.


    MrMees Waarom zou je de explode-functie gebruiken? Nogal nutteloos lijkt me.


    L.Groot Dan zou het zoiets moeten worden:


    Output:

    PHP
    2011-06-12: 1
    2011-06-13: 1
    2011-06-14: 
    2011-06-15: 1
    2011-06-16: 1
    2011-06-17: 1


    Maar ja, om zoiets complex in een MySQL-query te krijgen. Ik heb het liefst er geen PHP bij, als het ook met MySQL zelf kan. Nog meer suggesties? :)

  • Je zou volgens mij wel een MySQL functie kunnen schrijven die een TEMPORARY tabel maakt en daar de zeven waarden inzet aan de hand van input.
    Daarna kan je via een join zeven rijen terug krijgen met alles behalve de datum NULL als er een of meer data missen.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!