phpbar.de logo

Mailinglisten-Archive

RE: DB Strukturfrage
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: DB Strukturfrage





> -----Original Message-----
> From: Hans Theo Mislisch [mailto:htm_(at)_agathos.net]
> Sent: Monday, July 31, 2000 1:27 PM
> To: mysql-de_(at)_lists.4t2.com
> Subject: RE: DB Strukturfrage
>
>
>
> > Beispiel: Termin ist mit 119 eingetragen, Datumsrange stimmt
> und Du willst
> > prüfen, ob der Termin an einem Donnerstag angezeigt werden soll
> > (Donnerstag=8): 119 AND 8 = 0 =>ungültig
> > Suchst Du nach einem Freitag machst Du 119 AND 16 und erhältst 16 =>
> > gültig, Anzeigen!
>
> Hallo Florian,
>
> das verstehe ich leider nicht. In dem Feld HOP wird doch eine
> Zahl gespeichert.
> In deinem Beispiel wird doch 119 gespeichert.
>
> Wie kann AND da rausfinden ob da 16 drinsteckt? Das versteh ich
> leider nicht.

Höhere Mathematik :-)

Stells Dir als Bitfolge vor: 7 Bits 0000 0000 (für jeden Wochentag ein Bit)
Einen Montag (Mo=1) stellst Du da   0000 0001
Dienstag (Di=2)			      0000 0010
Mittwoch (Mi=4)				0000 0100
usw.
Bitnummer i (von rechts lesend) entspricht also dem Wert 2^i (2 hoch i)
(wobei man bei 0 anfängt zu zählen. Also das erste Bit entspricht 2^0 = 1,
das zweite 2^1 = 2 usw)

Beim Beispiel 119 erhältst Du die Bitfolge
						0111 0111 (alle Tage ausser Donnerstag = 119)

Die Bitfolge, auf die Du jetzt prüfen möchtest ist Donnerstag also 0000 1000
( entspricht 8)

Du hast also			0111 0111
				 AND  0000 1000

Die AND-Verküpfung verarbeitet diese Zahlen jetzt Bitweise. Wenn bei beiden
Zahlen die gleichen Bits gesetzt sind, kriegst Du als Ergebnis auch eine 1
an der entsprechenden Stelle raus: Da das hier nicht der Fall ist erhältst
Du als Ergbis 0000 0000 = 0

Anderes Beispiel: Du prüfst auf "Freitag" = 16 = 0001 0000

Dann kriegst Du			0111 0111
				AND	0001 0000
					=========
					0001 0000
Also 2^4=16 => Freitag ist drin.

So kannst Du natürlich auch prüfen, ob ein Termin an einem Montag und
Mittwoch ausgeführt wird: Einfach als Verknüpfungsparameter 0000 0101 nehmen
(1+4=5)

Das ist also, was unter der Haube mit der AND-Verknüpfung passiert. Jetzt
verstanden?

Gruß, Florian


--
Florian Lechner
mail: lechnerf_(at)_usa.net
ICQ : 17881397
Fax :  +49-180-5052-5418-1404

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive