Hi alle!
Ich kenne mich mit SQL noch nicht sonderlich gut aus, deshalb würde ich gern wissen, ob man das kleine Abfragemonster performanter hinbekommt.
Ich arbeite mit MSSQL-Server 2005.
SELECT *
FROM ADRESSEN
WHERE ADRESSEN.IDNR IN (
SELECT DISTINCT IDNR
FROM ADRESSEN
INNER JOIN ADRESSGRU ON
(ADRESSEN.IDNR = ADRESSGRU.ADR_ID) AND
(GR_ID=5 OR GR_ID=39 /* OR [...] (wird dynamisch hinzugefügt) */)
)
ORDER BY NAME1 ASC
Mit dieser Abfrage erreiche ich, dass nur die Adressen angezeigt werden, die in bestimmten Gruppen sind.
Die Abfrage klappt so auch, allerdings dauert sie schon ein paar Millisekündchen.
Das DISTINCT ist nötig (?), da eine Adresse mehreren Gruppen zugeordnet sein kann. Ohne würden die Adressen, die in x Gruppen sind, auch x-mal angezeigt werden. (Seh ich doch richtig, oder?)
Hat jemand eine bessere Idee?
Das funktioniert nicht, da DISTINCT ja nicht auf Textfelder angewandt werden darf:
SELECT DISTINCT *
FROM ADRESSEN
INNER JOIN ADRESSGRU ON
(ADRESSEN.IDNR = ADRESSGRU.ADR_ID) AND
(GR_ID=5 OR GR_ID=39 /* OR [...] */)
ORDER BY NAME1 ASC
MfG H☼psel
--
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)