Jag har en Oracledatabas med en tabell. Tabellen: Jo ungefär, förutom att i den andra selecten så behövs de inge datumkoll. strSQL = "SELECT * FROM TabellNamn WHERE Kod <> 23 AND (datum < '" & Date() - 90 & "' OR Kontakt IN (1,2, 5)" Löste de till slut...Och som ni ser så är detta inte precis som de scenario jag beskrev ovan. Men de var tanken bakom jag sökte.Problem med select-sats
Tabellen:
ID - räknare
Kontakt = tal, byte
datum = datum
Kod = tal
Kontakt har ett tal mellan 1 och 6.
Datum är ett datum med eller utan tid.
Kod är ett tal mellan 1 och 100
Nu vill jag ha ut ALLA poster som är äldre än 90 dagar fast inte dom med kod 23,
plus alla poster som är inom 90 dagar och har kontakt-nr 1,2 och 5 fast inte kod 23.
Alltså ALLDRIG kod 23.
Hur?Sv: Problem med select-sats
ID - räknare
Kontakt = tal, byte
datum = datum
Kod = tal
Kontakt har ett tal mellan 1 och 6.
Datum är ett datum med eller utan tid.
Kod är ett tal mellan 1 och 100
Nu vill jag ha ut ALLA poster som är äldre än 90 dagar fast inte dom med kod 23,
plus alla poster som är inom 90 dagar och har kontakt-nr 1,2 och 5 fast inte kod 23.
Alltså ALLDRIG kod 23.
Hur?
<code>
SQL = "select * from tabellnamn where datum > '" & dateadd - 90 & "' and kod <> '23'"
rs.open SQL, connect
SQL = "select * from tabellnamn where datum < '" & dateadd + 90 & "' and kontakt = '1' or kontakt = '2' or kontakt = '5' and kod <> '23'"
rs.open SQL, connect
</code>
var det så du tänkt?Sv: Problem med select-sats
Fast de jag sökte var att få in detta i en å samma selectsats. Borde inte de gå snabbare om de fungerar? Sv: Problem med select-sats
Eller:
strSQL = "SELECT * FROM TabellNamn WHERE Kod <> 23 AND (datum < '" & Date() - 90 & "' OR Kontakt = 1 OR Kontakt = 2 OR Kontakt = 5)"Sv: Problem med select-sats
Gärna en feedback om ni ser nånting som kan förbättras i koden. Eller om ni om vet att denna är krävande eller icke.
SELECT
c.compid, MAX(ct.donedate) as donedaten
FROM
Company c
,Contact_Trail ct
,Emp_Adm ea
,Team_lu tlu
,Company_attr ca
WHERE (c.compid = ct.compid (+)
AND ct.emp = ea.emp (+)
AND ea.team = tlu.code (+)
AND tlu.code (+) = '301'
AND c.country = 'SWE'
AND c.empno >= '50'
AND c.compid = ca.compid (+)" & _
AND ca.attrcode (+) <> '23')
AND ((ct.donedate < '" & date() - 90 & "' OR ct.donedate is null)
OR (ct.actiontype = '2' OR ct.actiontype='3' OR ct.actiontype='6'))
GROUP BY c.compid
HAVING MAX(ct.donedate) IS NULL OR MAX(ct.donedate) IS NOT NULL