Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

Как составить запрос который бы возвратил три записи:   Найти похожие ветки 

 
zorik ©   (2006-09-11 17:38) [0]

1-я предыдущая  перед второй
2-я где id равно заданому значению
3-я после второй

Например:

id   | name
----+------
23  | b
1   | a
54  | d
3  | f
100 | e
12  | c

select * from table order by name

1  a
23 b
12 c
54 d
100 e
3  f


Задаем параметр id=12 нужно получить:
23 b
12 c
54 d

id=100:
54 d
100 e
3  f

и т.д.


 
Desdechado ©   (2006-09-11 17:48) [1]

а для кода 1 чего?


 
atruhin ©   (2006-09-11 17:55) [2]

А если перед заданной, несколько записей с одинаковым name, какую выводить?
Вообще запрос составить можно, но эффективнее будет решить хранимкой.


 
zorik ©   (2006-09-11 17:55) [3]

Типа этого:
1  a
1  a
23 b

Обясняю. Это структура для веба. Навигация по записям


 
zorik ©   (2006-09-11 18:00) [4]

name -> unique, id - primary key


 
zorik ©   (2006-09-11 18:02) [5]

Хранимкой, думаю смогу. Но получится ли запустить ее в php пока не знаю. Буду пробовать


 
ANB ©   (2006-09-11 18:25) [6]

WITH t AS
    (
       SELECT 23 ID, "b" NAME
         FROM DUAL
       UNION ALL
       SELECT 1, "a"
         FROM DUAL
       UNION ALL
       SELECT 54, "d"
         FROM DUAL
       UNION ALL
       SELECT 3, "f"
         FROM DUAL
       UNION ALL
       SELECT 100, "e"
         FROM DUAL
       UNION ALL
       SELECT 12, "c"
         FROM DUAL)
SELECT *
 FROM t
WHERE NAME = (SELECT MAX (NAME)
                FROM t
               WHERE NAME < (SELECT NAME
                               FROM t
                              WHERE ID = :ID))
UNION ALL
SELECT *
 FROM t
WHERE ID = :ID
UNION ALL
SELECT *
 FROM t
WHERE NAME = (SELECT MIN (NAME)
                FROM t
               WHERE NAME > (SELECT NAME
                               FROM t
                              WHERE ID = :ID))

Эта. with только в оракле прокатит, посему надо будет t заменить на имя таблицы.


 
atruhin ©   (2006-09-11 18:38) [7]

Не знаю как ОРАКЛ но FB будет вычислять вложенные запросы отдельно, поэтому хранимкой эффективней.

> Хранимкой, думаю смогу. Но получится ли запустить ее в php
> пока не знаю.

Запрос из хранимки ни чем не отличается от запроса из таблицы, так что php тут не при чем.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.074 c
15-1160658233
Tigraman
2006-10-12 17:03
2006.11.05
Проблема с сетью


2-1161601943
ПёС
2006-10-23 15:12
2006.11.05
Помогите решить проблему с базой


3-1157531506
July
2006-09-06 12:31
2006.11.05
копирование blob


2-1161063939
svt
2006-10-17 09:45
2006.11.05
Мастера, подскажите как сделать так, чтобы


2-1161336375
dest81
2006-10-20 13:26
2006.11.05
Fbird &amp; sqlserver





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский