Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi select * from table where id = ein Wert vom Array (https://www.delphipraxis.net/138363-select-%2A-table-where-id-%3D-ein-wert-vom-array.html)

erich.wanker 8. Aug 2009 17:22

Datenbank: firebird • Version: 2.0.1 • Zugriff über: ZEOS

select * from table where id = ein Wert vom Array
 
Hallo Leute,

wie kann ich ein Array von Zahlen abfragen..

Delphi-Quellcode:
select * from table where (id=1) OR (id=2) OR (id=7) OR (id=10) OR (id=16) OR (id=17) ...
..das wird nämlich ganz schön lang ... ;-)

Vielen Dank

Erich

Dax 8. Aug 2009 17:25

Re: select * from table where id = ein Wert vom Array
 
SQL-Code:
select * from table where id in (1, 2, 7, 10, 16, 17, ...)

erich.wanker 8. Aug 2009 17:34

Re: select * from table where id = ein Wert vom Array
 
Danke für die schnelle Antwort :-)...

Hab ich da kein Problem mit der Länge des Statements ? ..SQL technisch gesehen.. (Performance ist natürlich geringer, je mehr Einträge im Array sind)...

Gehen tut´s um folgendes.. im ersten DbGrid kann ich ein Objekt auswählen - und im zweiten DbGrid wird mir dann der Datensatz gezeigt, der mit dem ersten matched...

Jetzt will ich "multiselect" im ersten DbGrid realisieren .. und da können schon mal einige hundert datensätze selectiert werden..

Dax 8. Aug 2009 17:38

Re: select * from table where id = ein Wert vom Array
 
Ein Statement zu parsen ist das kleinste Problem einer Datenbank. Nach dem Parsen kommt erstmal eine Rechteprüfung, dann Zugriff aufs Dateisystem (oder den Cache), verarbeiten der Indizes.. Hunderte Zeilen sind für ein einzelnes Statement kein Problem, tausende vermutlich auch nicht. Du musst dir immer im klaren darüber sein, dass deine Daten irgendwie zum Server müssen, und ein einzelnes Statement macht das viel schneller und effizienter als viele einzelne Statements. Wenn deine Datenbank und dein Konnektor Arrays unterstützt, kannst du versuchen, ein Array für die IDs zu benutzen - dann wird das Statement sehr kurz, aber die Daten müssen trotzdem noch irgendwie zum Server.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz