|
Тема |
Проблем с MIN() и MAX() |
|
Автор | Cтyдeнт (Нерегистриран) | |
Публикувано | 18.10.04 15:02 |
|
|
Привет ...
mySQL 4.0.21
CREATE TABLE `sections` (
`id` int(11) unsigned NOT NULL auto_increment,
`title` varchar(100) NOT NULL default '',
`code` varchar(4) NOT NULL default '',
`descr` varchar(50) NOT NULL default '',
`content` text NOT NULL,
`last_edited` datetime NOT NULL default '0000-00-00 00:00:00',
`disabled` tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM
mysql> select id from sections;
+----+
| id |
+----+
| 3 |
| 7 |
| 8 |
| 9 |
| 12 |
| 13 |
| 14 |
| 15 |
+----+
8 rows in set (0.00 sec)
Проблем:
Как с една заявка да изкарам съществуващите най-близка по-малка и най-близката по-голяма стойност от дадена:
Примерно за 14 трябва да получа 13 и 15, за 9 - 8 и 12 ... постигам нужния ми резултат с :
SELECT MAX(t1.id) AS my_min, MIN(t2.id) AS my_max
FROM sections AS t1 JOIN sections AS t2
WHERE t2.id > 8 AND t1.id < 8
но ако пусна заявката със стойност, която е извън границите на моето id, получавам два null-a :(
С други думи проблема ми е примерно за търсена стойност 3 да получа - 3 и 7, а за 15 - 14 и 15 ...
Тръгнах така, но не получавам, това което ми е нужно, пък и логиката ми нещо съвсем окуця ... :(
SELECT COALESCE(MAX(t1.id),MIN(t3.id)) AS my_min, COALESCE(MIN(t2.id),MAX(t3.id)) AS my_max
FROM sections AS t1
JOIN sections AS t2
JOIN sections AS t3
WHERE t2.id > 3 AND t1.id < 3
Предварително мерси ...
|
| |
|
|
|