2016-11-01 25 views
0

における2つのクエリの結果を組み合わせる:が、私はこれらのテーブルを持っているMySQLの

User(idUser, name...) 
Group(idGroup, name, ...) 

し、それらを関連付ける連想テーブル:

UserIsInGroup(idGroup, idUser...) 

私は、すべてのグループのIDをもたらすクエリを作りました私が探しているユーザーが表示されます。

select group.name, group.idGroup from Group 
join UserIsInGroup 
on group.idGroup = UserIsInGroup.idGroup 
where UserIsInGroup.idUser = 1; /*User #1*/ 

select group.name, group.idGroup from Group 
join UserIsInGroup 
on group.idGroup = UserIsInGroup.idGroup 
where UserIsInGroup.idUser = 2; /*User #2*/ 

もちろん、どちらのクエリでも異なる結果リストが表示されますが、共通の結果が得られます。

私はselect(クエリ#1の結果もクエリ#2にあります)のようにしたいのですが、どうやってそれを行うのか分かりません。

私はあなたが私に助けてくれることを願っています、ありがとう。

+0

私はあなたのテーブルが本当にグループと呼ばれていないと思います – Strawberry

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-anを参照してください-mcve-for-what-to-me-to-be-a-very-simple-sql-query – Strawberry

答えて

0

私はコメントとして十分な評判がないので、私はこれを答えとして書いています。 交差についてはどうですか? EDIT:このソリューションは、(私はこの答えを書いたとき、私はそれについて忘れてしまった)しかし、私はどうやら、私は投稿このソリューションの返信を見た

select group.name, group.idGroup from Group 
    join UserIsInGroup 
    on group.idGroup = UserIsInGroup.idGroup 
    where UserIsInGroup.idUser = 1; /*User #1*/ 
    INTERSECTS 
    select group.name, group.idGroup from Group 
join UserIsInGroup 
on group.idGroup = UserIsInGroup.idGroup 
where UserIsInGroup.idUser = 2; /*User #2*/ 

念のためにそれをここに残しておきますMySQLのためではありません、削除されました。

代替:

あなたはINNERが交差するための代替としてJOINを使用することができ、私はそれをテストし、動作しているようだ:あなたがそれぞれを与える必要があります お知らせエイリアスを選択し、この場合には、私はちょうど使用文字

select distinct * from (select group.name, group.idGroup from Group 
join UserIsInGroup 
on group.idGroup = UserIsInGroup.idGroup 
where UserIsInGroup.idUser = 1; /*User #1*/) as a 
INNER JOIN 
(select group.name, group.idGroup from Group 
join UserIsInGroup 
on group.idGroup = UserIsInGroup.idGroup 
where UserIsInGroup.idUser = 2; /*User #2*/) as b; 

内部結合は、共通の列を持つ2つのクエリのすべての行を返します。私はこれが役に立ったり、少なくともあなたにアイデアを与えてくれることを願っています

+0

答えをありがとう。今まで私はその手術をしていなかったので、私の心には来なかった。 はどうやら(表 [条件]から選択*)mysqlの中に存在しませんが、 は、[条件]テーブル から*選択して存在として、あなたがそれをシミュレートすることができINTERSECT ます。https://www.techonthenet .com/mysql/intersect.php とにかく何らかの理由で私のために働かない、私は間違ったことをする必要があります。テンポラリテーブルを使用して元のクエリの結果を保存してから、それらに結合する必要がありました。それは私がそれをするために見つけた唯一の方法です。 – Quique

+0

申し訳ありませんが、私は急いで、完全に忘れてしまった、私は別の解決策を持っていると思う、私は私の答えを編集するつもりです – nachomendi

関連する問題