Laden...

Select Abfrage

Letzter Beitrag vor 14 Jahren 7 Posts 1.448 Views
Select Abfrage

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

Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉

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.

roses are #FF0000 violets are #0000FF
all my base are belong to you

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 😉

roses are #FF0000 violets are #0000FF
all my base are belong to you