を結合します。は、私はこのような2つのクエリをしている2つのクエリのpostgresのの結果
ユーザーが、一つだけこののを持つことができますので、基本的にuser_ip
がNull
であるならば、user_id
はuser_id
がNull
であるならば、user_ip
が値を持つことになります値と反対になります。
私が望むのは、それらのクエリを1つのクエリにすることだけです。
最初のクエリは、これを与える:
project_id | user_ip | Count
1 | 1.2.3.4 | 40
2 | 1.2.3.5 | 25
3 | 1.2.3.6 | 9
4 | 1.2.3.7 | 7
第二はこれを与える:
project_id | user_id | Count
1 | 1234 | 100
2 | 4567 | 50
3 | 4321 | 49
だから私はこれを返します唯一のクエリを作りたい:
project_id | user_id | user_ip | Count
1 | 1234 | | 100
1 | | 1.2.3.4 | 40
2 | 4567 | | 50
2 | | 1.2.3.5 | 25
3 | 4321 | | 49
3 | | 1.2.3.6 | 9
4 | | 1.2.3.7 | 7
私は私は連合でそれをやろうとしましたが、私はERRORを受け取りました:UNION types text and integer cannot be matched
SELECT project_id, user_ip, count(*) AS Count
FROM "user"
WHERE user_ip IS NOT NULL
GROUP BY user_ip, project_id
UNION
SELECT project_id, user_id, count(*) AS Count
FROM "user"
WHERE user_id IS NOT NULL GROUP
BY user_id, project_id;
私が望む結果を達成するのに助けてくれる人はいますか?何が使えますか?
私はこのようなグループで試しました。 'SELECT project_id、user_ip、count(user_ip)AS Count_ip、count(user_id)count_id FROM" user "WHERE user_idがNULLでないかuser_ip IS NOT NULL GROUP BY user_id、project_id、user_ip;'私はそれが私に間違った結果を与えるので、私はそれを働かせることができませんでした –
多分ちょうど単一のカウント(*)で試してみてください。また、user_idとipの両方がNULLの場合がなければ、WHERE句は必要ありません。私は完全な質問で答えを更新します – dimm