SQL Query Help
iCA- 17.08.2006 - 11:02 1134 8
ica
hmm
|
unter mysql 5.0 hab ich folgendes problem: hab ein query was einfach 2 tables joint - so weit so gut, das result davon sieht mehr oder weniger so aus: user_id | user_class_id
-----------------------
39 | 1
39 | 7
39 | 8
54 | 1
jetzt will ich alle user (im obigen beispiel nur einer mit der id 39) die sowohl die user_class_id 1 UND 7 haben. die einzige methode mit der ichs bisher geschafft hab war folgende: SELECT ... INNER JOIN ... WHERE ... GROUP BY user_id HAVING COUNT(*) >=2 da das query haber später noch weitaus komplexer wird ist das auch net wirklich eine lösung. außerdem wird das query dynamisch aufgebaut und muss für alle möglichen kombinationen funktionieren... any ideas?
|
3mind
mimimi
|
vielleicht mit einem geschachtelten SELECT ? so in etwa: SELECT user_id
FROM ...
WHERE user_class_id = '7' AND user_id IN (SELECT user_id
FROM ...
WHERE user_class_id = '1');
leider sind meine SQL-kenntnisse auch nicht mehr die besten, und ich habe keine DB installiert um das jetzt gschwind zu testen.
|
Triple-X
Addicted
|
Habe jetzt nicht zum ausprobieren zur Hand, müsste aber so funktionieren, wenn ich die Anforderungen richtig verstanden habe SELECT *
FROM [USER]
INNER JOIN [USER_USER_CLASS] ON [USER].User_ID=[USER_USER_CLASS].User_ID
WHERE [USER_USER_CLASS].User_Class_ID IN (1,7)
wobei die Tabelle [USER_USER_CLASS] die Beziehungstabelle zwischen User und User_class ist.
|
ica
hmm
|
IN ist eine oder verknüpfung, also leider nicht das was ich will
|
that
ModeratorHoffnungsloser Optimist
|
"straight forward" würde ich sowas probieren (MySQL 5 kann ja AFAIK endlich Subqueries): select user_id from user u where exists(select user_class_id from user_class c where c.user_id = u.user_id and c.class_id = 1) and exists(select user_class_id from user_class c where c.user_id = u.user_id and c.class_id = 7) Ich hab kein MySQL 5 da und kanns daher nicht probieren, vielleicht ist das auch völliger Quatsch ... aber vielleicht gehts ja.
|
fresserettich
Here to stay
|
könntest eventuell posten was die end-query können soll weil irgendwie was dynamisch machen etc. hilft mir nicht recht weiter ich kann ja nicht raten in welche richtung es gehen soll
|
ica
hmm
|
könntest eventuell posten was die end-query können soll weil irgendwie was dynamisch machen etc. hilft mir nicht recht weiter ich kann ja nicht raten in welche richtung es gehen soll das end query kann ganz unterschiedlich aussehen. es geht darum, dass user beliebige suchfilter definieren und diese auch speichern können. daher sieht das query jedesmal anders aus - je nachdem was sich der user zusammenstellt. aber das tut hier nichts zur sache, wenn das query vom startpost funktioniert geht auch der rest...sind einfach nur mehrere joins/subquerys. @that: thx, werd ich mal probieren
|
ica
hmm
|
thx that funktioniert
|
fresserettich
Here to stay
|
wäre auch in die richtig und that gegangen und in einer where-bedingung mit subquerys zu arbeiten
|