Das hat nix mit den Parametern zu tuen, in einem
SQL eine Parameter mehrfach verwenden, mache ich seit Jahr und Tag regelmäßig, funktioniert bei allen Datenbanken problemlos.
Distinct macht aus mehreren Datensätzen des ersten Selects einen Datensatz.
Union fügt die zweite Ergebnismenge dazu
und sorgt für Eindeutigkeit der gesamten Ergebnismenge.
Wenn nun beim ersten Select Parent = Delphi sein sollte und beim zweiten Select ArtLink = Delphi, so enthält die Ergebnismenge des Union nur eine Zeile mit dem Wert Delphi.
Wie ändert sich das Ergebnis, wenn Du statt
Union mal
Union All verwendest, bekommst du dann mehrere (ggfls. identische) Datenätze als Ergebnis?
Bist Du sicher, dass Dein bisheriges Ergebnis nur Daten des ersten Selects enthält? Woran kannst Du das mit Sicherheit festmachen?
Hast Du geprüft, ob beide Abfragen für sich alleine jeweils ein Ergebnis liefern?
Hast Du sichergestellt, dass sie auch unterschiedliche Ergebnisse liefern?
Ändert sich das Ergebnis, wenn Du die Abfrage in etwa so änderst?
SQL-Code:
SELECT DISTINCT Parent, 'Erste Abfrage' As Was FROM Hierarchie h1a WHERE (h1a.Parent = :ParamInteger1)
UNION
SELECT ArtLink, 'Zweite Abfrage' As Was FROM
(SELECT ArtLink, Parent FROM Hierarchie h2a WHERE (h2a.Parent = :ParamInteger1))