[MEGOLDVA] Keresd a hibát!

Adott a következő MySQL tábla az alábbi adatokkal: http://pastebin.com/V0bujAhD

Hogyan keressük meg azokat a sorokat, amelyek nem jó helyen vannak, ha az ID értékek szigorúan egymás után következnek úgy, hogy a hozzájuk rendelt dátum is egymás után kell következzen?

HINT:
A fenti példában a 343 és 352 nincsenek a helyükön, (2014-01-17 helyett 2014-01-16-on vannak), de előfordulhatnak egyéb anomáliák is.

Külső segédszkriptekkel meg tudom keresni, viszont van-e esetleg erre tiszta mysql megoldás?

Megoldás:

SELECT DISTINCT
t1.*
FROM
ttt t1 INNER JOIN ttt t2
ON t1.id>t2.id
WHERE
t1.datum<t2.datum

A Pastebines adatok sajnos nem frissek, abban nincs hiba. :)

Hozzászólások

Szia,

Mit értesz azon hogy nincsenek a helyükön? Sajnos nem egészen értem mi a probléma.

A 343 és 352 nincsenek a helyükön, (2014-01-16-on vannak holott 2014-01-17-én kéne legyenek: 342 és 344, valamint 351 és 353 dátumai miatt). Így értem. Tehát ezeket a selejtes sorokat kéne kiemelni, amelyek nem követik a növekményt megfelelően.
--
Coding for fun. ;)

No igen, így várhatom, hogy legyen kimenete (nincs) ennek:


select a.id, a.datum, b.id, b.datum
from ttt as a, ttt as b
where
      (b.id <= a.id and b.datum > a.datum)
   or (b.id >= a.id and b.datum < a.datum)

Nem állítom, hogy nem szoktam nemlétező problémákat megoldani, de ritkán importálok ilyesmihez adatokat.