Ich bin ein Neuling und habe folgendes SQL-Problem (benutze SQL, Access 97 ODBC):
Angenommen da sind Firmenmitarbeiter in einer Spalte "Name". Jeder hat ein oder mehrere Hobbys wie Fussball, Tennis, Judo, Radfahren, Joggen etc. Diese Hobbys will ich in einer Spalte "Hobby" folgendermassen als Zahl speichern (in Access 97 habe ich für die Spalte Hobby den Felddatentyp=Zahl und die Feldgrösse="Byte" eingestellt): Ich möchte für jede Sportart ein Bit setzen, Z.B.:
Fussball = 1
Tennis = 2
Judo = 4
Radfahren = 8
Joggen = 16
Wandern = 32
etc.
Das heisst, wenn Mitarbeiter Meier Tennis spielt, erhält er die Zahl 2. Mitarbeiter Müller spielt Tennis und Judo, erhält also die Zahl 6 (2+4) und Mitarbeiter Keller spielt Fussball und Tennis, fährt Rad und joggt, erhält also in der Spalte "Hobby" die Zahl 27 (aus 1+2+8+16).
Wie muss ich nun die SQL-Abfrage in WHERE formulieren, wenn ich z.B. alle Tennisspieler herausfiltern will?
Wenn die Variable "Wert" die Zahl 2 enthält, so liefert mir folgendes SQL-Beispiel im Resultat nur den Mitarbeiter Meier, und ich möchte ja alle Tennisspieler erhalten:
SELECT *
FROM Firmenmitarbeiter
WHERE Hobby = Wert
ORDER by Name ASC
Ich bräuchte eine bitweise Überprüfung der gespeicherten Zahl in "Hobby" mit der Laufzeitvariablen "Wert". Und genau eine solche bitweise Überprüfung suchte ich bisher vergeblich.
Vielen Dank!
Angenommen da sind Firmenmitarbeiter in einer Spalte "Name". Jeder hat ein oder mehrere Hobbys wie Fussball, Tennis, Judo, Radfahren, Joggen etc. Diese Hobbys will ich in einer Spalte "Hobby" folgendermassen als Zahl speichern (in Access 97 habe ich für die Spalte Hobby den Felddatentyp=Zahl und die Feldgrösse="Byte" eingestellt): Ich möchte für jede Sportart ein Bit setzen, Z.B.:
Fussball = 1
Tennis = 2
Judo = 4
Radfahren = 8
Joggen = 16
Wandern = 32
etc.
Das heisst, wenn Mitarbeiter Meier Tennis spielt, erhält er die Zahl 2. Mitarbeiter Müller spielt Tennis und Judo, erhält also die Zahl 6 (2+4) und Mitarbeiter Keller spielt Fussball und Tennis, fährt Rad und joggt, erhält also in der Spalte "Hobby" die Zahl 27 (aus 1+2+8+16).
Wie muss ich nun die SQL-Abfrage in WHERE formulieren, wenn ich z.B. alle Tennisspieler herausfiltern will?
Wenn die Variable "Wert" die Zahl 2 enthält, so liefert mir folgendes SQL-Beispiel im Resultat nur den Mitarbeiter Meier, und ich möchte ja alle Tennisspieler erhalten:
SELECT *
FROM Firmenmitarbeiter
WHERE Hobby = Wert
ORDER by Name ASC
Ich bräuchte eine bitweise Überprüfung der gespeicherten Zahl in "Hobby" mit der Laufzeitvariablen "Wert". Und genau eine solche bitweise Überprüfung suchte ich bisher vergeblich.
Vielen Dank!