verwendetes Datenbanksystem: MS SQL 2005
Hallo,
wie kann ich alle object_id(s) selektieren, die bestimmte variablen und werte haben.
Tab1:
object_id variable_id value
1 A 10
1 B 11
1 C 12
1 F 77
2 A 10
2 B 11
2 W 333
3 A 12
3 B 22
3 C 25
4 B 55
4 F 56
4 D 124
6 E 44
Bsp:
select object_id from Tab1 where (variable_id = 'A' and value = '10') and (variable_id = 'B' and value = '11') and (variable_id = 'C' and value = '12')
Ich habe es mit Klammern visuell gezeigt was ich meine, ich möchte bestimmte variable_id mit bestimmten value verknüpfen. Es kann gut sein, dass ich 100 solche variablen so verknüpfen muss.
Grüße
Moin radeksm,
schreib dir doch einfach eine StoredProcedure der Du den Namen und den Wert übergibst und vereinige dann die Ergebnisse mehrer Aufrufe mit UNION.
Grüße
bigeddie
Moin radeksm,
schreib dir doch einfach eine StoredProcedure der Du den Namen und den Wert übergibst und vereinige dann die Ergebnisse mehrer Aufrufe mit UNION.
Grüße
bigeddie
Hallo bigeddie,
danke für Deine Hilfe aber ich kann nicht direkt via Transact SQL oä auf DB gehen. Die DB ist eine Fremd Komponente, da kann ich "nur" select, update und insert abfeuern. Ich kann es höchstens programmatisch machen aber bei 100000 Einträgen wird es schwierig sein.
Ist es mit einer 'Select' Abfrage nicht machbar?
Grüße
radeksm
Hallo,
ich bin mir nicht sicher, ob ich dein Problem richtig verstanden habe.
Du hast ein DB, auf welche du nur mittels SQL-Kommandos aus einem Programm heraus Zugriff hast?
Dann wird dir kaum etwas anderes üblig bleiben als
select object_id from Tab1
where (variable_id = 'A' and value = '10')
OR (variable_id = 'B' and value = '11')
OR (variable_id = 'C' and value = '12')
OR (variable_id = '...' and value = '...') ...
Ein Alternative wäre vielleicht auch ein
select * from Tab1
und dann mittels LINQ einschränken.
Oder: kannst du von einer anderen Datenbank darauf zugreifen, z.B. mit einem View?
Dann könntest du in der 2ten Datenbank eine tabelle füllen mit den gesuchten Kombinationen von ID/value und diese auf das View, welches aus der Fremd-DB liest joinen.
Hallo Zusammen,
die Lösung ist INTERSECT:
select object_id from Tab1 where variable_id = 'a' and value='10'
INTERSECT
select object_id from Tab1 where variable_id = 'b' and value='11'
INTERSECT
select object_id from Tab1 where variable_id = 'c' and value='12'
Danke für Eure Hilfe
Das hättest du mit SELECT DISTINCT object_id auch einfacher und performanter haben können.
Das hättest du mit GROUP BY object_id auch einfacher und performanter haben können.
so stimmt's 😉