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?



Martin Ramsch wrote:

> 
> Nur so als Gedankenspielerei ein anderer Ansatz, bei dem (ohne
> Kreuzprodukt) über IDs gruppiert wird.  Um herauszufinden, ob
> innerhalb eine Gruppe die gesuchten zwei IDv-Werte vorhanden sind,
> kann man diese beiden auf 1 abbilden, alle anderen auf 0 - und wenn
> die Summe über die Gruppe 2 ergibt, dann waren beide Werte dabei:
Wenn man auch mehr als zwei verschiedene IDv's sucht scheint mir das
etwas einfacher implementieren zu lassen. 

> SELECT
>         IDs
> FROM
>         s_link_v
> GROUP BY
>         IDs
> HAVING
>         SUM( SIGN(FIELD(IDv,1,29)) ) = 2
> ;
> 
> Kurzerklärung:
>  - FIELD liefert 0, falls nicht in der Liste,
>                 sonst die Position des Suchelemets in der Liste
>  - SIGN bildet positive Zahlen auf 1 ab, die Null bleibt 0.
> 
> 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.
Soweit glaube ich es verstanden zu haben, leider klappt die
Suche nicht immer. Zum Verst"andnis: IDs verweist auf eine
Tabelle mit Subjects (Personen), IDv auf eine Tabelle
mit Experimenten. Also kann jede Person mehrere Experimente
gemacht haben, jedes Experiment kann von mehreren Personen
gemacht werden. Auch kann eine Person ein Exp. mehrfach machen.

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 |   11 |
|  161 |   14 |
|  161 |   21 |
|  161 |   22 |
|  161 |   23 |
|  161 |   26 |
|  161 |   27 |
|  161 |   28 |
|  161 |    5 |
|  161 |    6 |
+------+------+
Also hat Person 161 den Versuch 35 nicht gemacht :-(
Wo ist der Fehler?
Ich bin ratlos!
Danke


-- 
+---------------------------------------------------------+
|Michael Renner                   |                       |
|MPI fuer biologische Kybernetik  |Phone: +49-7071-601-638|
|Spemannstr.38, D-72076 Tuebingen |FAX:   +49-7071-601-616|
|michael.renner_(at)_tuebingen.mpg.de  |                       |
+---------------------------------------------------ESC:wq+

---
*** 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