Автор Тема: SQL-подинтервал от резултати, kak?  (Прочетена 1420 пъти)

PSU

  • Участници
  • ***
  • Публикации: 3
    • Профил
От известно време чета вашия форум и го намирам за доста интересен. Тук човек може да научи много неща. Поздравления. Имам нужда от малко помощ и затова реших да се регистрирам и да ви задам следния въпрос:

Да речем, че имам SQL Query, което връща 15 резултата. Това, което искам да направя е да напиша query, което да може да върне зададен подинтервал от тези резултати, вместо всичките 15 (например да върне от 5-ти до 10-ти резултат). Проблемът ми е че търся начин това да се направи на чист Structured Query Language, т.е. без да се използват специфичните за това функции или stored procedures за дадена база данни (като например rownum в Oracle или auto_increment полета). Целта на това разбира се е кода ми да бъде преносим от една база данни на друга. Производителността в случая не ми е приоритет.

Възможно ли е това? От доста време търся решение на този проблем и даже някои хора ми казаха, че това е невъзможно да се направи на чист SQL. Вие как смятате?
Активен

zazzko

  • Напреднали
  • *****
  • Публикации: 626
    • Профил
    • WWW
SQL-подинтервал от резултати, kak?
« Отговор #1 -: Nov 04, 2004, 18:16 »
Възможно е. Нарича се вложен select. Доколкото знам това е дефинирано в ANSI SQL. За съжаление MySQL не го поддържа и май нямат намерение да го въвеждат (ще се радвам ако някой ме опровергае). Ако използваш PostgreSQL няма проблем обаче.

Йордан

  • Напреднали
  • *****
  • Публикации: 1451
  • Distribution: Ubuntu / Gentoo
  • Window Manager: Gnome
  • не е важно колко ти е голяма пишката, а какво можеш с нея
    • Профил
    • WWW
SQL-подинтервал от резултати, kak?
« Отговор #2 -: Nov 04, 2004, 18:56 »
Цитат (zazzko @ Ноември 04 2004,19:16)
Възможно е. Нарича се вложен select. Доколкото знам това е дефинирано в ANSI SQL. За съжаление MySQL не го поддържа и май нямат намерение да го въвеждат (ще се радвам ако някой ме опровергае). Ако използваш PostgreSQL няма проблем обаче.

Ако говориш за селект в който има лимит... това се поддържа от MySQL. Ако правилно съм разбрал въпроса, става дума за следното... искаш от заявката да можеш да извлечем примерно първите пет или вторите шест или последните седем отговора... ако е така става със слект в който има лимит
Активен

Всеки пост - отговор на въпрос !!!

Йордан Георгиев
http://ygeorgiev.net/

PSU

  • Участници
  • ***
  • Публикации: 3
    • Профил
SQL-подинтервал от резултати, kak?
« Отговор #3 -: Nov 05, 2004, 21:44 »
Цитат (GigaVolt @ Ноември 04 2004,19:56)
Цитат (zazzko @ Ноември 04 2004,19:16)
Възможно е. Нарича се вложен select. Доколкото знам това е дефинирано в ANSI SQL. За съжаление MySQL не го поддържа и май нямат намерение да го въвеждат (ще се радвам ако някой ме опровергае). Ако използваш PostgreSQL няма проблем обаче.

Ако говориш за селект в който има лимит... това се поддържа от MySQL. Ако правилно съм разбрал въпроса, става дума за следното... искаш от заявката да можеш да извлечем примерно първите пет или вторите шест или последните седем отговора... ако е така става със слект в който има лимит

Sagalqvam 4e ne pi6a na kirilica no v momenta nqmam vazmognost.
Da pravilno si razbral to4no tova iskam oba4e bez da se izpolzvat specifi4ni funkcii za dadena baza dani t.e. da moje koda bez problem da se polzva v razli4ni bazi dani/da e prenosim/.
Активен

tzappa

  • Напреднали
  • *****
  • Публикации: 34
    • Профил
    • WWW
SQL-подинтервал от резултати, kak?
« Отговор #4 -: Nov 06, 2004, 10:51 »
ANSI SQL стандарта е по-скоро препоръчителен, а не толкова задължителен. Освен това повечето създатели на БД не следват стрикно стандартите що се отнася до синтаксиса. Като илюстрация може да служи и отговора на твоят въпрос:
Firebird използва SELECT FIRST 10 SKIP 50...
MySQL - LIMIT...
и т.н.

За да направиш приложение, което да е независимо от БД (доколко това е възможно зависи и от типа на приложението),
си създай помощни функции, които да са преправят динамично заявките в необходимия синтаксис.
Активен

http://3na100.com - сподели колата си

PSU

  • Участници
  • ***
  • Публикации: 3
    • Профил
SQL-подинтервал от резултати, kak?
« Отговор #5 -: Nov 06, 2004, 14:23 »
"а да направиш приложение, което да е независимо от БД (доколко това е възможно зависи и от типа на приложението),
си създай помощни функции, които да са преправят динамично заявките в необходимия синтаксис."

10x za otgovora tova e qsno no ne mi var6i rabota. Kakto i da e otkazah ot tova !

Blagodarq na vsi4ki
Активен