Server-Daten - Web-Datenbanken zum Mietenbasierend auf den Standards Sql und Xml, einfach und leistungsfähig

Zur Startseite


Das Server-Daten - Forum: Einzelner Thread

 

Zurück zur Forumsstartseite


1. free  28.12.2008 19:47:11Peter de MaasLesen/Editieren   Antworten

SQL AbfrageGuten Tag,
ich bin auf diese Seite über eine Suche nach SQL Abfragen gekommen und finde das Tutorial sehr lehrreich. Leider habe ich ein SQL Abfrage Problem, welches ich damit noch nicht lösen kann. Kann ich dazu hier eine Frage Stellen?
Gruß
Peter de Maas

2. free  28.12.2008 19:52:43Jürgen AuerLesen/Editieren   Antworten

Re: SQL AbfrageHallo Herr Maas,

> Kann ich dazu hier eine Frage Stellen?

klar, warum nicht.

Fragen Sie mal!


3. free  28.12.2008 20:17:10Peter de MaasLesen/Editieren   Antworten

SQL AbfrageEs geht um ein VB6 Projekt, welches eine mdb Datenbank steuert, in dem eine Vielzahl von Daten zu einem Personen/Klientenkreis zugeordnet werden. Daneben sollen die gespeicherten Daten aber auch über das VB6 Projekt ausgewertet werden. Dies geschieht über SQL-Abfragen. Bei den "normalen" Abfragen habe ich zumeist keine Probleme, eine zugordnete Information innerhalb einer Tabelle ist jedoch als bitset in einer Spalte gespeichert. Hat also eine Person Kenntnisse in Spanisch, Deutsch, Englisch, Französisch usw., so wird diese Gesamtinformation in einer entsprechenden Bitzahl hinterlegt 1+2+4+8 usw. Bei der Auswertung will ich nun wissen, wieviele Personen können (auch) Spanisch (1) oder wieviele (auch) Englisch (4) usw. Muss also jeden Datensatz bei jeder Sprache abfragen, ob die referierende Zahl im gespeicherten Wert der Personenzeile für Sprache enthalten ist. In VB würde ich das mit einer Schleifenkonstruktion bewerkstelligen, ich hoffe aber, es gibt dafür eine Formel innerhalb einer SQL-Abfrage!?
Vielen Dank für eine Hinweisantwort.

4. free  28.12.2008 20:58:48Jürgen AuerLesen/Editieren   Antworten

Access und Bitset-TechnikenBeim MS-SqlServer geht das direkt, sehen Sie sich die Beispiele unter

http://www.sql-und-xml.de/server-daten/sql-befehle/operatoren.htm

1.4 Bitweise Operatoren an.


Das etwas blöde Problem liegt darin, daß Access diese Bitoperatoren so nicht kennt. Es gibt allerdings einen 'kleinen Trick', mit dem man das lösen kann. Den verwende ich selbst innerhalb von Server-Daten, um bei solchen Bitset-Ausgaben (Checkbox 1 - deutsch, 2 - englisch, 4 - französisch usw) herauszufinden, ob der Wert $v in der Datenspalte (bsp. 5 = deutsch und französisch) den Wert $val (1 = deutsch) enthält (XSL kennt auch keine Bitset-Operatoren):

($v mod ($val * 2)) >= $val

Sieht schlimm aus, funktioniert aber :-)

$v = 1, $val = 1: 1 mod 2 = 1 >= 1, also enthalten - 1 kann deutsch.

$v = 2, $val = 1: 2 mod 2 = 0 < 2, also nicht enthalten - ein reiner Engländer kann kein deutsch.

$v = 3, $val = 1: 3 mod 2 = 1 >= 1 - ok
$v = 3, $val = 2: 3 mod 4 = 3 >= 2 - auch ok


$v = 5 (dt+fr), $val = 4: 5 mod 8 = 5 >= 4 - der dt-fr-Kenner kann französisch.

Ansonsten könnte man sich in Access auch eine selbstdefinierte Funktion schreiben, da VBA die Operatoren AND/OR als Bitset-Operatoren unterstützt:

MsgBox (5 And 3)

gibt 1 zurück, das kann man dann (genauso wie beim MS-SqlServer) auf = 0 oder <> 0 testen.


5. free  28.12.2008 21:36:27Peter de MaasLesen/Editieren   Antworten

SQL Abfrage BitsetVielen Dank für die rasche Antwort.
Damit kann ich schon was anfangen. Ihre Seite erhält einen fetten Bookmark bei mir. Werde sicher noch öfter hier vorbeischauen.
Beste Grüße
Peter de Maas

|<<>>|1 / 51

Zurück zur Forumsstartseite

Zurück zu beispiel.server-daten.de