phpbar.de logo

Mailinglisten-Archive

SQL abfrage zwischen drinn?

SQL abfrage zwischen drinn?

Sebastian Mendel lists at sebastianmendel.de
Mit Mai 26 18:23:21 CEST 2004


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