Forums Neueste Beiträge
 

problematische SQL Abfrage

10/03/2009 - 15:01 von Michael | Report spam
Hallo

Ich habe folgende 2 Tabellen:

Bitmeldungen
[Bit],[Bitwert],[BitText]
0,1,aaaaa
1,2,bbbbb
2,4,ccccc
3,8,ddddd
4,16,eeeee

SPSMeldungen
[...],[Bitwert],[SPSText]
1,'' --> Bitmeldung 0
3,'' --> Bitmeldung 0 und 1
10,'' --> Bitmeldung 1 und 3

Tabelle SPS-Meldungen ist eine temporàre Tabelle, die dem Benutzer angezeigt
wird. Deshalb möchte ich den Klartext der Bitmeldungen auch anzeigen. Wie
muss ich den Insert aufbauen, damit ich alle Bit-Klartexte in die Tabelle
SPS-Meldungen einfügen kann. Wie oben ersichtlich, kann eine SPS Meldung aus
mehreren Bits bestehen!

Mein Ansatz sieht wie folgt aus:
INSERT INTO SPSMeldungen(SPSText) SELECT BitText FROM Bitmeldungen WHERE
Bitwert & SPSMeldung.Bitwert

Der logische Vergleich mit SPSMeldung.Bitwert funktioniert natürlich nicht!
Aber wie muss es realisieren???

Besten Dank für Tipps!
 

Lesen sie die antworten

#1 Christoph Ingenhaag
10/03/2009 - 16:00 | Warnen spam
"Michael" wrote:

Hallo

Ich habe folgende 2 Tabellen:

Bitmeldungen
[Bit],[Bitwert],[BitText]
0,1,aaaaa
1,2,bbbbb
2,4,ccccc
3,8,ddddd
4,16,eeeee

SPSMeldungen
[...],[Bitwert],[SPSText]
1,'' --> Bitmeldung 0
3,'' --> Bitmeldung 0 und 1
10,'' --> Bitmeldung 1 und 3

Tabelle SPS-Meldungen ist eine temporàre Tabelle, die dem Benutzer angezeigt
wird. Deshalb möchte ich den Klartext der Bitmeldungen auch anzeigen. Wie
muss ich den Insert aufbauen, damit ich alle Bit-Klartexte in die Tabelle
SPS-Meldungen einfügen kann. Wie oben ersichtlich, kann eine SPS Meldung aus
mehreren Bits bestehen!

Mein Ansatz sieht wie folgt aus:
INSERT INTO SPSMeldungen(SPSText) SELECT BitText FROM Bitmeldungen WHERE
Bitwert & SPSMeldung.Bitwert

Der logische Vergleich mit SPSMeldung.Bitwert funktioniert natürlich nicht!
Aber wie muss es realisieren???

Besten Dank für Tipps!



Hi Michael!

Hier ein Weg, dies zu Lösen:

use tempdb
create table dbo.BitMeldung([Bit] int,[Bitwert] int,[BitText] varchar(50))

insert into dbo.BitMeldung
select 0,1,'aaaaa' union all
select 1,2,'bbbbb' union all
select 2,4,'ccccc' union all
select 3,8,'ddddd' union all
select 4,16,'eeeee'

declare
@Meldung varchar(8000),
@Val int

set @Meldung = ''
set @Val = 11
select
@Meldung = @Meldung + BitText
from dbo.BitMeldung
where
Bitwert & @Val = Bitwert

select @Meldung

drop table BitMeldung

Du müsstest dann noch
INSERT INTO SPSMeldungen(SPSText) SELECT @Val
dazupacken...

VG
Christoph

Ähnliche fragen