AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Unterschiedliche Datensätze selektieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Datensätze selektieren

Ein Thema von HPB · begonnen am 9. Dez 2014 · letzter Beitrag vom 9. Dez 2014
Antwort Antwort
Seite 2 von 2     12   
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#11

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 15:46
Ich habe einfach nicht gewusst, dass und wie ich den IN-Operator
auch in einer SQL-Anweisung anwenden kann.
Diese Lösung fünktioniert natürlich nur solange der zusammengebaute SQL Befehl die maximale Länge nicht überschreitet.
D.h. nur bei relativ kleinen Datensatzzahlen, nicht bei einem Befehl der im IN alle IDs wie bei einem SELECT * enthält.
Michael Justin
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#12

AW: Unterschiedliche Datensätze selektieren

  Alt 9. Dez 2014, 16:01
Diese Lösung hat natürlich so sein Geschmäcke, da man hier ein Statement zusammenbaut. Änderungen an der Datenbank ziehen plötzlich an zig verschiedenen Stellen (einmal eingeführt wird das an zig Stellen so benutzt) Änderungen mit sich.
Also Records anhand der ID zu lesen ist so mit das unveränderlichste, was ich kenne. "Geschmäckle" hat es imho nur, wenn man den Automatismus ansetzt:"Huch, eine Query wird gebaut! Gefahr! SQL-Injection! Iiiehh!". Dagegen ist zunächst nichts einzuwenden. Zunächst, denn...
... nun ist das aber mindestens in ORM gang und gäbe, und eine IN-Selektion über Integer-Werte über eine selbstgebaute Funktion zu erstellen ist doch gefahrlos möglich. Das geht in jedem Fall schneller, als sich von hinten durch die Brust ins Auge eine extrem unperformante Lösung auszudenken.

Leider wurde beim 'IN' Operator die Parametrierungsmöglichkeit vergessen. Also macht man da eine Ausnahme: Man wird weder geteert noch gefedert und ausgelacht aus nicht.

Zitat:
Eine statische Abfrage nach den Werten SELECT f1, f2, f3 FROM foo WHERE id=:id
Wo ist bei dieser Abfrage der konzeptionelle Unterschied zu einer IN-Abfrage? Ach, der Datentype? Und wenn der Name 'id' verändert wird?

Selektierte Datensätze in ein ClientDataset, die Daten (XML oder Binär) mit der Information was das denn bitteschön ist an den Reporter mit dem/den gewünschten Report/s.
Wieso kein TDataset? Verstehe ich nicht. Da mach ich doch wieder Klimmzüge.

Dataset mit Parametrierung des Reports (und dieses eine Mal ein SELECT mit IN zusammengebaut). Fertig. Das ganze an den Report geflanscht und schon kann es losgehen. Das mit dem "XML oder Binär" habe ich nicht verstanden.

@mjustin: Das stimmt, da kommt es auf das RDBMS an. ich glaube, beim SQL-Server gibt es kein Limit. Aber wenn der Benutzer 100000 IDs ausgewählt hat, hat er selbst Schuld... Ich weiß, ein kleiner Button 'SELECT ALL' und -wupps- hat man den Salat.

Geändert von Dejan Vu ( 9. Dez 2014 um 16:04 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 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