Följande pseudo skrivs in:
SELECT *
FROM wlanlog AS table1, wlanlog AS table2
WHERE table1.timestamp BETWEEN begin AND end
AND table1.timestamp = ( table2.timestamp +300 ) AND table1.ap != table2.ap AND table1.user = table2.user
Vilket resulterar i att de olikheter som man får fram läggs bredvid varandra, inte radvis alltså. Sker någon mystisk JOIN då? Eller är det jag som e puckad? :)
Jag vill ha radvis kanske ska tilläggas.
LarsGMedlem sedan dec. 200012 464 inlägg Jag förstår inte vad du menar.
Exemplifiera med datainnehåll och förväntat resultat.
mer förklarat...
wlanlog
----------
timestamp user AP
1130900100 0000000008E3 000B85181E20
1130900400 0000000008E3 000B851AE500
1130900701 0000000008E3 000B85181E20
Kör:
SELECT count( * )
FROM wlanlog AS table1, wlanlog AS table2
WHERE table1.timestamp BETWEEN 1130900100 AND 1130900701
AND table2.timestamp = ( table1.timestamp +300 )
AND table1.ap != table2.ap
AND table1.user = table2.user
Resulterar i:
count( * )
1
Vill ha (eftersom användaren roamar 2 ggr):
count( * )
2
LarsGMedlem sedan dec. 200012 464 inlägg Tja, det gjorde väl inte saken klarare. De rader som du visar i ditt resultat finns ju inte med i det första utdraget.
select timestamp,ap,user
from wanlog as q1
where exists
(select *
from wanlog as q2
where q1.timestamp + 300 = q2.timestamp
and q1.user = q2.user
and q1.ap <> q2.ap)
union
select timestamp,ap,user
from wanlog as q1
where exists
(select *
from wanlog as q2
where q1.timestamp - 300 = q2.timestamp
and q1.user = q2.user
and q1.ap <> q2.ap)
ändringar
har nu ändrat i mitt föregående inlägg... var kanske lite korkat av mig att inte göra det så klart jag kunde :) men nu ska det framgå ganska så tydligt iaf... var lite svårt att exemplifiera bra när vi jobbar med en ganska stor databas (dessutom när man inte har total kontroll på MySQL såsom du)
tackar för all hjälp btw...