0

私はこのクエリを持っています:

    SELECT ava_users.*, 0 AS ord
    FROM ava_friend_requests
    LEFT JOIN ava_users 
    ON ava_friend_requests.from_user = ava_users.id
    WHERE ava_friend_requests.to_user = $user[id]
    UNION ALL
    SELECT ava_users.*, 1 AS ord
    FROM ava_friends
    LEFT JOIN ava_users 
    ON ava_friends.user2 = ava_users.id
    WHERE ava_friends.user1 = $user[id]
    ORDER BY ord
    LIMIT $from, $display_num

ご覧のとおり、UNION ALL を使用した 2 つのクエリがあります。

今私の質問は次のとおりです。各クエリをカウントするにはどうすればよいですか? 各カウント値を取得するにはどうすればよいですか? クエリ番号 1 のカウント結果とクエリ番号 2 のカウント結果が必要です。

更新: カウント結果を次のようにしたいと思います: カウント 1: 34、カウント 2: 45

ここを参照してください:複数のテーブルからカウントを選択してください

4

2 に答える 2

1

これを試してみてください:

select count(*) from (SELECT ava_users.*, 0 AS ord
FROM ava_friend_requests
LEFT JOIN ava_users 
ON ava_friend_requests.from_user = ava_users.id
WHERE ava_friend_requests.to_user = $user[id]
UNION ALL
SELECT ava_users.*, 1 AS ord
FROM ava_friends
LEFT JOIN ava_users 
ON ava_friends.user2 = ava_users.id
WHERE ava_friends.user1 = $user[id]
ORDER BY ord
LIMIT $from, $display_num) as users;

これは、ユニオンをテーブルのように扱い、すべての要素を数えることを意味します。

于 2013-08-11T15:52:04.990 に答える