Avatar billede j3ppah Novice
25. september 2007 - 13:18 Der er 12 kommentarer og
1 løsning

Søg efter personer som mangler at sende data

Hej alle SQL eksperter :).. da dette ikke ligefrem er mit område har jeg et spørgsmål.

Vi har ca 100 butikker som indraportere data vedrørende kundetælling. (de indraportere hver time)

jeg vil lave en søge sætning der gør følgende.

Den skal kunne vise hvilke butikker der IKKE har indraporteret data de sidste 48 timer fra dags dato.
den skal kun vise butikkens navn og butiksID en gang.

altså hvis de ikke har indraporteret data skal den skrive hvilke butikker der ikke har, alle der har indraporteret data er jeg ligeglad med.



Sorry hvis dette lyder lettere forvirende, men det er jeg også :P

synes den er lidt tricky...
Avatar billede j3ppah Novice
25. september 2007 - 13:18 #1
ps. spørg endelig hvis i mangler flere indformationer
Avatar billede lorentsnv Nybegynder
25. september 2007 - 13:26 #2
Konceptuelt:
select *
from tblMedAlleButikker
where not exits (Select distinct ButiksNr From tblKundetælling where ButiksNr = tblMedAlleButikker.ButiksNr)
Avatar billede pierrehusted Nybegynder
25. september 2007 - 13:29 #3
Tja, lidt info om hvilke tabeller du har og hvilke felter der findes i dem ville være godt.

En præcisering af "de sidste 48 timer fra dags dato" ville også være godt. Mener du 48 timer fra nu (tidspunktet nu), dette døgn og de 2 forgående eller noget helt tredie.

Men jeg brygger lige lidt uden info...

Hvis vi går ud fra at du har følgende tabeller:
- Butikker (id, navn)
- Hentede_data (id, butik_id, dato, kundetal)
Og vil vide for 48 timer bagud fra lige nu.


Så kan vi prøve noget i den her stil... :

SELECT id, navn FROM butikker
WHERE id NOT IN
(SELECT DISTINCT butik_id FROM Hentede_data WHERE dato > CURRENT_TIMESTAMP - 2)
Avatar billede j3ppah Novice
25. september 2007 - 13:30 #4
det skal så bare kun være dem som har manglet data 48 timer i træk... :/.. og det skal være 48 timer tilbage fra dags dato du fyrer sætningen af
Avatar billede lorentsnv Nybegynder
25. september 2007 - 13:31 #5
Sorry, exists, var fejl skrevet, jeg skrev exits, og det skal være exists.

Det er flere måder at løse problemet på, men du skal have en select som starter med alle dine butikker, og på en eller anden måde fjærner de butikker som du har fået data fra. Ovenstående burde også begrænses til at teste på tid, indenfor 48 timer;

select *
from tblMedAlleButikker
where not exits (Select distinct ButiksNr From tblKundetælling where ButiksNr = tblMedAlleButikker.ButiksNr Where date > DateAdd(day,-2,getdate()))
Avatar billede j3ppah Novice
25. september 2007 - 13:32 #6
hver butik har hvert deres SHOPID, der er MOUNTH der er DATE, der er COUNTED, der er TIME (hvornår data er kommet ind), og BUTIK navn

Og det skal være hvor der ikke er kommet data ind de sidste 48 timer fra når du kører teksten
Avatar billede pierrehusted Nybegynder
25. september 2007 - 13:32 #7
48 timer tilbage fra dags dato??  Der er ikke timer i en dato.
Så mener 48 timer bagud fra 2007-09-25 eller 48 timer bagud fra 2007.09.25 13:32 ??

Hvordan har du dataene liggende??  Det er jo ret afgørende for hvordan de kan/skal/bør hentes frem.
Avatar billede j3ppah Novice
25. september 2007 - 13:53 #8
Okay lad os bare sige 3 dage det er helt fint i stedet for to.. så du kan bare tage 3 dage tilbage fra den dag det er idag
Avatar billede lorentsnv Nybegynder
25. september 2007 - 13:55 #9
Giver det nogetn mening med følgende:

SELECT *
FROM  tblMedAlleButikker b
WHERE  NOT EXISTS (
              SELECT SHOPID FROM (
                      SELECT DISTINCT SHOPID FROM tblKundetælling
                      WHERE TIME >= DATEADD(day, -2, GetDate())
                      ) a
              WHERE a.SHIOPID = b.SHOPID
              )

Den inderste select laver en liste med alle butikker som har haft kundetælling resultater indenfor de sidste to døgn, baseret på aktuelt tidspunkt som jeg henter med GetDate().

Resultatet herfra bruger jeg i en NOT EXISTS, for at frasortere de butikker som har returneret data.
Avatar billede j3ppah Novice
25. september 2007 - 14:46 #10
jeg vil lige teste det men det ser ud som om det burde virke :).. smid et svar så tester jeg lige om det virker
Avatar billede lorentsnv Nybegynder
25. september 2007 - 14:49 #11
:)
Avatar billede j3ppah Novice
25. september 2007 - 15:09 #12
det bliver lige testen i morgen så gir jeg lige points hvis det virkede ;)
Avatar billede j3ppah Novice
26. september 2007 - 13:18 #13
jeg siger mange tak lorntsnv, det virker næsten helt operfekt :).. men laver lige et spørgsmål mere ;).. du kan jo se om du også kan løse den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester