Титла: SQL-подинтервал от резултати, kak? Публикувано от: PSU в Nov 04, 2004, 17:15 От известно време чета вашия форум и го намирам за доста интересен. Тук човек може да научи много неща. Поздравления. Имам нужда от малко помощ и затова реших да се регистрирам и да ви задам следния въпрос:
Да речем, че имам SQL Query, което връща 15 резултата. Това, което искам да направя е да напиша query, което да може да върне зададен подинтервал от тези резултати, вместо всичките 15 (например да върне от 5-ти до 10-ти резултат). Проблемът ми е че търся начин това да се направи на чист Structured Query Language, т.е. без да се използват специфичните за това функции или stored procedures за дадена база данни (като например rownum в Oracle или auto_increment полета). Целта на това разбира се е кода ми да бъде преносим от една база данни на друга. Производителността в случая не ми е приоритет. Възможно ли е това? От доста време търся решение на този проблем и даже някои хора ми казаха, че това е невъзможно да се направи на чист SQL. Вие как смятате? Титла: SQL-подинтервал от резултати, kak? Публикувано от: zazzko в Nov 04, 2004, 18:16 Възможно е. Нарича се вложен select. Доколкото знам това е дефинирано в ANSI SQL. За съжаление MySQL не го поддържа и май нямат намерение да го въвеждат (ще се радвам ако някой ме опровергае). Ако използваш PostgreSQL няма проблем обаче.
Титла: SQL-подинтервал от резултати, kak? Публикувано от: Йордан в Nov 04, 2004, 18:56
Ако говориш за селект в който има лимит... това се поддържа от MySQL. Ако правилно съм разбрал въпроса, става дума за следното... искаш от заявката да можеш да извлечем примерно първите пет или вторите шест или последните седем отговора... ако е така става със слект в който има лимит Титла: SQL-подинтервал от резултати, kak? Публикувано от: PSU в Nov 05, 2004, 21:44
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/. Титла: SQL-подинтервал от резултати, kak? Публикувано от: tzappa в Nov 06, 2004, 10:51 ANSI SQL стандарта е по-скоро препоръчителен, а не толкова задължителен. Освен това повечето създатели на БД не следват стрикно стандартите що се отнася до синтаксиса. Като илюстрация може да служи и отговора на твоят въпрос:
Firebird използва SELECT FIRST 10 SKIP 50... MySQL - LIMIT... и т.н. За да направиш приложение, което да е независимо от БД (доколко това е възможно зависи и от типа на приложението), си създай помощни функции, които да са преправят динамично заявките в необходимия синтаксис. Титла: SQL-подинтервал от резултати, kak? Публикувано от: PSU в 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 |