Jag har en tabell, tblEvents, med dessa fält: SELECT * FROM tblEvents WHERE EventDate BETWEEN #2004-07-01# AND #2004-11-01# AND CustomerID IN(SELECT CustomerID FROM tblEvents WHERE EventType = 1 AND EventDate BETWEEN #2004-08-01# AND #2004-08-10#) hmm, Såg i ett svar du gett på inlägg att du skriver snitsig kod så därför kommer jag bara med förslag på upplägget. Tror detta skulle kunna fungera! Hakar på för att lära mig optimera. <b>Fråga 1: När A kommer in i bilden så är det = ny tabell (alt nytt recordset eller annan term)? </b> Tack för svaret. Ska fundera och prova lite så jag lär mig bättre att göra saker på det enklaste sättet.Trixig fråga
EventID
CustomerID
EventType
EventDate
Jag behöver en fråga som väljer ut en speciell typ av händelse och alla andra händelser för aktuella kunder inom ett visst tidsintervall. En händelse kan t.ex. vara ett välkomstbrev, ett besök i vår mässmonter, ett säljbesök, utskick av en speciell broschyr osv
Vad jag är ute efter är alltså att kunna få en lista över alla kunder som har fått ett speciellt utskick från oss vid något tillfälle och alla andra händelser för dessa kunder under tre månader före och efter de har fått utskicket.
Hoppas ni förstår vad jag menar! och att det låter sig göras...
/ÅsaSv: Trixig fråga
Alla saker som inträffat mellan 2004-07-01 och 2004-11-01 för kunder som haft EventType 1 mellan 2004-08-01 och 2004-08-10.
/JohanSv: Trixig fråga
det är bara det att EventDate för "EventType = 1" kan vara vilket datum som helst och EventDate för de andra händelserna ska vara relativt det man fick med "EventType = 1"...Sv: Trixig fråga
Om du skriver en kod som går igenom kund för kund och skickar resultatet till en ny tabell?
Dvs:
För varje CustomerID
-Fråga efter Datum för eventID
-Ställ frågan om alla händelser inom önskat datumintervall för bara den kunden
-Lägg till resultatet i en tabell
/AnnSv: Trixig fråga
SELECT tblEvents.* FROM tblEvents, (SELECT CustomerID, EventDate FROM tblEvents WHERE EventType = 1) A WHERE tblEvents.CustomerID = A.CustomerID AND tblEvents.EventDate BETWEEN DateAdd("m", -3, A.EventDate) AND DateAdd("m", 3, A.EventDate)
/JohanSv: Trixig fråga
Fråga 1: När A kommer in i bilden så är det = ny tabell (alt nytt recordset eller annan term)?
Ställer också frågan som eventuellt relevant:
Fråga 2: Saknas inte EventType i resultatet? Förmodar att det är av intresse att veta även i vilken form och inte bara att det varit kundkontakt?
/AnnSv: Trixig fråga
Eftersom jag läser in samma tabell 2 gånger behöver jag ge den andra ett "nytt namn", A i detta fallet. Här bygger jag frågan på tabellen tblEvent samt resultatet av (SELECT CustomerID, EventDate FROM tblEvents WHERE EventType = 1). I detta fallet hade det inte behövts då man kan göra urvalet efteråt, men jag valde att göra så för att det blev tydligare.
<b>Fråga 2: Saknas inte EventType i resultatet? Förmodar att det är av intresse att veta även i vilken form och inte bara att det varit kundkontakt?</b>
Nej, tblEvent.* returnerar alla kolumner i tabellen tblEvent.
Kan lika gära göra om fråga utan subqueryn, borde vara effektivare (har ingen större koll på effektivitet, så detta är bara en gissning).
SELECT A.* FROM tblEvents A, tblEvents B WHERE A.CustomerID = B.CustomerID AND A.EventDate BETWEEN DateAdd("m", -3, B.EventDate) AND DateAdd("m", 3, B.EventDate) AND B.EventType = 1
/JohanSv: Trixig fråga
/Ann