phpbar.de logo

Mailinglisten-Archive

Re: SELECT mit Mehrfachauswahl?
Archiv Mailingliste mysql-de

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

Re: SELECT mit Mehrfachauswahl?



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


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive