SQL zaqvka

20 отговора 459 прегледа
#1

SQL zaqvka

Imam naprimer edna obiknovena zaqvka kato tazi:
select * from clienti
Tazi zaqvka primerno mi vra6ta 10 zapisa. Kak da napravq taka, 4e da mi pokaje samo parvite 4 zapisa, a drugite da ne gi pokazva. Izpolzvam Interbase ina4e v MySQL ima6e maj "limit", koeto re6ava6e tozi problem. Mersi.

Отговор
в отговор на dani #2

Re: SQL zaqvka

select first 4 * from clienti
ама това работи на FireBird. Ти кой точно сървър ползваш?

Отговор
в отговор на dani #4

Re: SQL zaqvka

опитай със stored procedure
малко по дълго е но може да свърши работа
нещо такова
CREATE PROCEDURE SELECTEMPLOYEES (
MAXCOUNT INTEGER)
RETURNS (
FIRSTNAME VARCHAR(50))
AS
DECLARE VARIABLE CNT INTEGER;
begin
CNT=0;
for select FirstName from employees
into :FirstName
do
begin
if (CNT>=:MAXCOUNT) then
break;
suspend;
CNT=CNT+1;
end

end

и после избираш първите 4ри
select * from selectemployees(4)

този SQL обаче не се държи добре по отношение на order by (select * from selectemployees(4) order by firstname)

Отговор
в отговор на x-man #5

Re: SQL zaqvka

Само вместо break; трябва да е Exit;

Отговор
в отговор на dani #6

Re: SQL zaqvka

Той не поддържа такива неща. Или използвай по-нова версия (разбирай FireBird, щото InterBase си е платен вече) или направи някакъв трик със сторедпроцедурка, както ти показа x-man

Отговор
в отговор на andrew_nikoloff #7

Re: SQL zaqvka

не че има голямо значение...

но тази процедура връща един и същ резултат и с Exit и с Break (Firebird 1.0)

Отговор
в отговор на dani #8

Stranichen vapros

Bi li mi poiasnil prichinite, poradi koito si preminal ot MySQL na IB. V momenta izbiram kym koe da se orientiram i ste mi e interesno.
(Do kolkoto imash vreme za otgovor na takyv vypros)

Отговор
в отговор на x-man #9

Re: SQL zaqvka

Нямам InterBase при мене, с FB съм и не мога да го проверя, ама ако не се лъжа IB има само Exit, но не и Break... А човека каза, че е с IB 6.0.2... Дано не греша ама май е така

Отговор
в отговор на andrew_nikoloff #10

Re: SQL zaqvka

Опитах се да намеря нещо за Break в документацията на Interbase 6.0 (2AllBooks.pdf) обаче не се споменава нищо - споменава се само Exit
така че си прав

Отговор
в отговор на NikB #11

Re: Stranichen vapros

Vav firmata v koqto rabotq se izpolzva Interbase :). Ina4e vse pak Interbase si e Borlandski kakto i Delphi, koeto trqbva da te navejda na misalta, 4e e po-optimiziran za Delphi. No sega na predna liniq izliza Firebird-a.

Отговор
в отговор на dani #12

Re: Stranichen vapros

Точно тази версия е ужасно бъгава - имам предвид 6.0 - та - може би 02 е по добре - обаче имам лоши спомени - заради които зарязах IB- то преди. Виж сега пак съм се захванал - и познах заради какво - именно заради FB - препоръчвам ти да го погледнеш сериозно.
А колкото до съвместимоста - не мисля, че някъде явно съм срещал коментари че едни или други компоненти работят по добре с IB от FB - нека другите да ме коригират ако знаят.

---
Е т'ва е живот!
Отговор
в отговор на dani #13

Re: Stranichen vapros

Interbase няма специална оптимизация за работа с Delphi (каквото и да значи това).

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

Ако държиш на безплатното, ползвай Firebird 1.0. Това е опън сорса на IB6 с отстранени бъгове и добавена функционалност. Предстои релиз на FB1.5. Разработчиците му твърдят, че има пълна обратна съвместимост с IB6 и почти пълна с IB7. Това означава, че всички native компоненти за IB могат да се ползват и за FB. За FB2 обаче се очаква, че ще се появят значителни различия.

Най-лошия избор е IB6, защото на практика това е един изоставен, от Борланд проект (без пари не им е интересен)

PS. Направи си усилието в българските форуми да пишеш на български

Редактирано от NDeu на

Отговор
в отговор на dani #14

Не много страничен въпрос

Ползувам FB 1.5, но все не мога да намеря какви са допълнителните му възможности спрямо IB 6 /в смисъл поддържани функции и оператори като например - first N /. Ако някой знае линк ще съм много благодарен !

Отговор
в отговор на val63 #15

Re: Не много страничен въпрос

FB поддържа SQL-92 Standards - потърси ги в нета - проблема на тези които намерих е че са платени :(((((( - pdf-a беше 18$ май. Или поне това пише в сайта на FB.

---
Е т'ва е живот!
Отговор
в отговор на val63 #16

Re: Не много страничен въпрос

Ами за новостите във FB трябва да си четеш ReleaseNotes-ите, защото все още няма завършена единна документация за него (чел съм едно файлче, ама май беше драфт и не мога да се сетя за адрес). Иначе за IB6 можеш да си ги дръпнеш от [линк]

По въпроса за бъговете в IB - 6.0.1 е отвратителен , ама 6.0.2 е с една идея по-добре. Но наистина е аПсолютно безмислено да се ползва 6-така, след като има FB .

Има някои неща, които не ми се вързват с понятието "обратно съвместим", но те са дреболии и се оправят лесно. Например сега се сещам за следната ситуация. Имаш следния SQL:
select p.id, p.amount, p.client_id, c.name from payments p inner join clients c on c.id = p.client_id where id = :ID
Това е напълно нормален RefreshSQL за TIBDataSet да речем. С IB6 си работи като пушка и ако си си писал програмата едно време за него, ще се изненадаш, че това на FB гърми с internal gds software consistency check (table PAYMENTS). или Ambiguous field name between table PAYMENTS and table CLIENTS. Обратно съвместим, ама не съвсем
Признавам, че горният SQL не е съвсем коректен, ама все пак на IB си върви, а под обратна съвместимост аз разбирам да не ми се налага да си прекомпилирам програмата като си сложа FireBird-а...

Отговор
в отговор на val63 #17

Re: Не много страничен въпрос

Потърси в инсталацията си файл Help.gdb

Отговор
в отговор на NDeu #18

Re: Не много страничен въпрос

Идейно
Страхотен формат за хелпове
Дали да не предложим на чичко Бил да заменят chm-тата с gdb-та

Отговор
в отговор на andrew_nikoloff #19

Re: Не много страничен въпрос

Е, никой не обещава обратна съвместимост на бъговете

Странното е как шестицата се усеща условието за c.id ли се отнася или за p.id

Отговор
в отговор на andrew_nikoloff #20

Re: Не много страничен въпрос

Очаквах някой да пусне удобен инструмент за навигиране, но до сега не съм видял

Отговор