Mailinglisten-Archive |
Michael Renner schrieb am Freitag, den 16. Juli 1999: > > Für eine Bedingung "genau 3 aus 4" wäre es z.B. FIELD(IDv,w,x,y,z) > > ... = 3, oder "mindestens 2 aus 4": FIELD(IDv,w,x,y,z) ... >= 2. [...] > [...] Auch kann eine Person ein Exp. mehrfach machen. Dieser letzte Satz ist wichtig! > > Suche ich jetzt: > mysql> SELECT IDs FROM s_link_v GROUP BY IDs HAVING SUM( > SIGN(FIELD(IDv,3,5,35)) ) = 3; > +------+ > | IDs | > +------+ > | 161 | > > Das stimmt aber leider nicht, denn: > mysql> SELECT IDs,IDv FROM s_link_v WHERE IDs=161; > +------+------+ > | IDs | IDv | > +------+------+ > | 161 | 3 | > | 161 | 5 | [...] > | 161 | 5 | [...] > +------+------+ > Also hat Person 161 den Versuch 35 nicht gemacht :-( > Wo ist der Fehler? Da der Versuch Nr.5 zweimal auftaucht, wird er mit der SUM-Methode auch zweimal gezählt. Lösungsansätze: - In der Tabelle s_link_v noch eine Feld (z.B. VNr) hinzufügen, in dem Du notierst, zum wievielten Mal die Person diesen Versuch durchgeführt hat. Dann kannst Du per WHERE VNr=1 einschränken. - Oder Du verwendest die BIT_OR-Methode, denn da wirkt sich mehrfaches Auftreten einer IDv nicht aus. SELECT IDs FROM s_link_v GROUP BY IDs HAVING BIT_OR(POWER(2,FIELD(IDv,3,5,35)))>>1 = 7; Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://home.pages.de/~ramsch/ > PGP KeyID=0xE8EF4F75 FiPr=52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7 --- *** 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