Mailinglisten-Archive |
> -----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
php::bar PHP Wiki - Listenarchive