Page 1 of 1

Zvláštní chování při použití TOP 1 v SQL dotazu

PostPosted: Thu 27. Mar 2025 22:02:33
by SILL
Dobrý den,

při použití PmaDatabase (ODBC) používám pro Open() sql dotaz "SELECT TOP 1 * ... ". Když podmínce vyhovuje jediný výsledek tak je vše v pořádku, ale jakmile podmínce vyhovuje více výsledků, tak je z nějakého důvodu vráceno více řádků, ale ve všech je stejný řádek. Jakmile při testování TOP 1 zruším, tak už řádky jsou vráceny správně.

Je toto chování s TOP 1 správné? Použit je SQL Server a Promotic 9.0.29.

S pozdravem,
Libor

Re: Zvláštní chování při použití TOP 1 v SQL dotazu

PostPosted: Mon 31. Mar 2025 6:57:14
by Tomáš Bräuer
Dobrý den,
to podle mne není správně. Pro MSSQL Server příkaz SELECT TOP 1 ... určitě má vracet jeden záznam, pokud jde o jednoduchou tabulku, není to uložená procedura, trigger atd. Zkoušel jste to v sql konzoli, nebo management studiu nebo v našem PmDbAdmin.chm? Osobně jsem se stím nikdy nesetkal, nejsem ale specialista MS SQL.

PmaDatabase už roky nepoužíváme, takže těžkou odhadnout. U PmaDatabase bývala volba PassThrough , která pouštěla SQL command do cílové databáze, jinak to zpracovávalo DAO přímo. Tzn pokud šel dotaz skrze DAO engine, potom tomu TOP 1 nerozumí, protože se to týká jenom MS SQL. Jiné Db to mají jinak. Už je to 10 let, co jsem se setkal s PmaDatabase, opravdu nevím.