Mailinglisten-Archive |
Ok ok, man sollte nicht gleich am fruehen morgen schnell mal
zwischendurch so was schreiben ohne vorher erstmal einen starken
Schwarztee getrunkten zu haben, wenn man keine Zeit zum testen hat.
Also jetzt nochmal die hoffentlich richtige Loesung:
SELECT p2.*
FROM pix p1, pix p2
WHERE p1.usr_name = p2.usr_name
AND p1.id = 0815
AND ( p1.id < p2.id
AND 6 >= ( SELECT COUNT(*)
FROM pix pi
WHERE pi.usr_name = p1.usr_name
AND pi.id BETWEEN p1.id AND p2.id ) )
OR ( p1.id > p2.id
AND 6 >= ( SELECT COUNT(*)
FROM pix pi
WHERE pi.user_name = p2.usr_name
AND pi.id BETWEEN p2.id AND p1.id ) )
ORDER BY p2.datum
Es gibt auch noch eine einfachere die ueber einen 11 x JOIN geht mit
id+1,..., id+5 bzw. id-1,..., id-5. Diese hier hat aber den Vorteil,
dass die id nicht fortlaufend sein muss und auch die Randbereiche
beruecksichtigt werden, in denen keine 5 Vorgaenge oder Nachfolger
existieren.
tschau
Jan Kuehl schrieb:
> Hi noch mal
...
>
>>Michael Schoenboeck schrieb:
>>
>>
>>>Moin,
>>>
>>>Ich frage mich ob folgendes in SQL machbar ist:
>>>
>>>Originalabfrage:
>>>select * from `pix` where id='0815' and usr_name='maxi'";
>>>
>>>Gibt mir einen datensatz zurück, was auch ok so ist, da ID der
>>>primerschlüssel ist
>>>
>>>Jetzt möchte ich aber auch 5 datensätze passend zu usr_name VOR diesem
>>>datensatz und 5 nach diesem datensatz, sortiert nach datum.
>>>
>>>Das in einer abfrage, wo von mir aus gesamt 10 (11) datensätze geliefert
>>>werden...
>>>
>>>Hm, hat da wer ideen?
>>>
>>>Lg
>>>michael
>>>
>>>--
>>>Deine Online Community -> http://net4u.cc/
>>>Chat, Foren, SMS, Mail, Web, Fun & more...
>>>
>>
>>
>
>
--
Software-Tomography - we make the invisible visible!
Jan Kuehl
Software-Tomography GmbH
Karlstr.7
D-03044 Cottbus
e-Mail: jan.kuehl at software-tomography.com
http://www.software-tomography.com
Phone: +49 (0355) 4945077
----------------------------
php::bar PHP Wiki - Listenarchive