0

connections友情制度を求めるテーブルがあります。列は次のとおりです。

id、、、、、from_ to_ direction_liking

ユーザーが友達リクエストを送信するたびに、行が追加され、方向が1に設定されます(順方向に1、逆方向に2)。他のユーザーが友達リクエストを受け入れると、別の行が追加され、方向が2に設定されます。

ユーザーの友達を作る方法を見つけようとしています。しかし、次のクエリを実行すると、行が繰り返されます。

            SELECT
                `users`.`name`,`users`.`id`
            FROM
                `connections`,
                `users`
            WHERE
                (
                    `connections`.`from` = 1234 AND
                    `connections`.`to` = `users`.`id` AND
                    `connections`.`direction` = 1
                )
                OR
                (
                    `connections`.`to` = 1234 AND
                    `connections`.`from` = `users`.`id` AND
                    `connections`.`direction` = 2
                )

行が繰り返されないように、このクエリを変更して含めるにはどうすればよいですか?

更新:列があるため、2つの行を追加していますliking。この値は、「個別のユーザー接続」では異なります。

例-Aの好みは0.95にすることができますB。そして、のためBだけの好みを持つことができます。0.25A

4

1 に答える 1

0

コメントに基づいて、外部クエリを追加できます。

 SELECT
            name, DISTINCT(id) AS id
 FROM
     (original query)

友達がリクエストを受け入れたときに行を追加すると言います。これにより、2つの行が作成されます。既存の行を新しい方向で更新する方が理にかなっていますか?-コメントに従ってこの最後の部分を無視します

于 2012-10-06T07:35:27.677 に答える