2016-10-01 12 views
0

これは2,3日後に私が迷惑をかけるように助けてくれることを願っています。私はテーブルから一意の行の総数を取得しようとしています。たとえば、表のデータは次のようになります。常にユーザのペアリングのための唯一の単一のエントリもあるMySQLから一意の行を選択

私は何を見つけたいことUSER_IDは(列 user_1または列 user_2のいずれか)に表示された行の合計数です
user_1 | user_2 | date_added   | date_removed   
--------|--------|---------------------|--------------------- 
1  | 2  | 2016-09-20 15:51:45 | 2016-09-24 09:15:32 
1  | 3  | 2016-09-21 10:16:03 | 2016-09-29 00:46:44 
6  | 1  | 2016-09-23 05:48:59 | 0000-00-00 00:00:00 
1  | 3  | 2016-09-30 09:57:16 | 0000-00-00 00:00:00 

、(ユーザーのペアます同じ列にある)、date_removed = 0000-00-00 00:00:00

したがって、上記の表をuser_id '1'で検索すると、合計は '1'にな​​ります。 (3行目のみが検索基準と一致します)。 user_id '2'の検索は '0'になります。 user_idの '3'は '0'に等しくなります。 user_idの '6'は '1'に等しくなります。

希望は意味があります。どんな助けや指針も高く評価されます。

---- EDIT ----

これは私がこれまでのところ、私は株式会社は、などに参加し、いくつかの方法を試してみたが、これは今のところ私に最も近いを得て、そのないきれいないクエリです私は確かに確かに!

より多くのデータがテーブルに表示され、クエリの結果は次のようになりますしかし
SELECT COUNT(*) AS `count` 
FROM `table` 
WHERE (`user_1` = '1' OR `user_2` = '1') 
GROUP BY `user_1`, `user_2` 
HAVING `count` < '2' AND MAX(`date_removed`) < '0000-00-00 00:00:01' 

、:私はそれを見せたい

count 
----- 
1 
1 
1 

count 
----- 
3 
+0

あなたの説明から、あなたはuser_1だけを検索しているようです。しかし、user_1とuser_2の両方のuser_idを検索するように思えます。その場合、user_idが1の場合、カウントは2になります。したがって、user_idが6または1の場合、3行目と一致します.1のuser_idは、3行目と4行に一致します。詳細は? – TimBrownlaw

+0

user_idは両方の列(user_1とuser_2)で検索されます。 3行目のみがユーザー1の検索要件と一致しますが、4行目にはdate_removedの場合 '0000-00-00 00:00:00'が、2行目にもユーザーのペアリング(1と3)が表示されます。 – user3053392

+0

あなたはすでに試したSQLに質問しますか? @ user3053392が指摘したように、複数の行が見つかることを理解しています。また、user_id = 3の場合、私の理解から1(4行目)も返されます。私たちは何かを欠いていると思う。 – Tom

答えて

0

以上がありますこれを達成する1つの方法よりも。 オプションを送信して、ビューを作成しやすくしましたが、ビューを作成したくない場合は、そのコードをサブクエリで使用できます。

  1. create view result as 
    select user1, user2, date_removed from test 
    union all 
    select user2, user1, date_removed from test 
    
  2. user2の

    select r.user1, r.user2 
    from result r 
    where 
        r.date_removed = '0000-00-00 00:00:00' 
        and r.user2 not in (select r2.user2 
             from result r2 
             where r2.date_removed <> '0000-00-00 00:00:00') 
    

クエリを作成し、USER1のすべての可能な組み合わせ組合にビューを作成しますが、それはそれを解決するために、あなたのお役に立てば幸いです。

関連する問題