Einzelnen Beitrag anzeigen

Blitzschutz1

Registriert seit: 2. Dez 2011
Ort: Vogtland (über Bayern)
26 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Plötzlich neues Feld nach SELECT - Abfrage

  Alt 4. Sep 2022, 10:56
Moin...

Sorry, aber für die Mitlesenden Neulinge...

Der Code ist ein Kandidat für ein umfassendes Refactoring.

1: SQL keine Parameter:
https://de.wikipedia.org/wiki/SQL-Injection
...besser
Delphi-Quellcode:
 
sqlAbfrage := sqlAbfrage +
              ' SELECT tabelle1.*, tabelle2.* ' +
              ' FROM ' +
              ' tabelle1, tabelle2' +
              ' WHERE ' +
              ' tabelle1.ag_id = :DID' +
              ' AND ' +
              ' tabelle2.vst_id = :DID';
 AQuery.ParamByName('DID').AsInteger := ADasaId;
Das SQL so zusammenzusetzen ist nicht mein Fall...die '' + Orgien. Ist aber Geschmackssache...
... habe ich im Originalcode drin. Der Einfachheit halber aber hier vor dem Post rausgenommen...

vst_id ist bestimmt zwei Mal im Select
und da Namen eindeutig sind, wird hier einfach hochgezählt.

Ist wie das selbe Feld, nur quasi mit AS umbenannt.

hier kann es nur aus beiden Tabellen kommen,
aber es passiert auch gern, wenn man Felder explizit drin hat und zusätzlich noch einmal das *
Danke @himitsu, das wird es wohl sein!

Ich habe das Feld vst_id einmal in Tabelle1 als ganz normales Integer-Feld (dahinein kommt nach erfolgreichem Eintrag des zugehörigen Dasa in Tabelle2 die dort im Feld vst_id (PK) erzeugte Datensatz-ID). Und das andere Mal, wie gerade geschrieben, in Tabelle2 als Pk-Feld. Nun war ich immer der Meinung, dass die Zuordnung über Tabellenname.Feldname eindeutig wäre und es egal ist, ob zwei Felder in unterschiedlichen Tabellen gleiche Namen haben.

Offensichtlich falsch, also setzen 5 und lernen!

Ich werde Euren Rat befolgen und die Abfrage umbauen (also ohne *).

Schönen Sonntag!
Wenn die Klugen nachgeben geschieht das was die Dummen wollen!
  Mit Zitat antworten Zitat