Mailinglisten-Archive |
Michael Schoenboeck wrote:
> 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?
mit UNION ab MySQL 4.0.0:
SELECT `pix`.*
FROM `pix`
WHERE `pix`.`id` = '0815'
AND `pix`.`usr_name` = 'maxi'
UNION
SELECT `pix_result`.*
FROM `pix`
LEFT JOIN `pix` AS `pix_5_before`
ON `pix`.`usr_name` = `pix_5_before`.`usr_name`
WHERE `pix`.`id` = '0815'
AND `pix`.`usr_name` = 'maxi'
AND `pix_5_before`.`date` < `pix`.`date`
LIMIT 5
UNION
SELECT `pix_5_after`.*
FROM `pix`
LEFT JOIN `pix` AS `pix_5_after`
ON `pix`.`usr_name` = `pix_5_after`.`usr_name`
WHERE `pix`.`id` = '0815'
AND `pix`.`usr_name` = 'maxi'
AND `pix_5_after`.`date` > `pix`.`date`
LIMIT 5
so in der art ... irgendwie, viel spaß beim rumprobieren!
--
Sebastian Mendel (www.sebastianmendel.de)
*www.warzonez.de* | www.tekkno4u.de | www.nofetish.com
php::bar PHP Wiki - Listenarchive