MySQL объединяет несколько столбцов из одной таблицы - PullRequest
1 голос
/ 18 сентября 2010

Я пытаюсь написать запрос, который возвращает информацию профиля пользователя, а также количество вхождений идентификатора пользователя в 2 столбцах из другой таблицы.Пример ниже:

TableA
userID  userName
1       UserA
2       UserB

TableB
LinkID  leadID  followID
1       1       2
2       1       3
3       2       1

Запросы к идентификатору пользователя 1 Я ожидаю получить UserA , 2 (вхождения 1 в leadID) и 1 (встречается 1 в followID).Любая помощь с этим очень ценится, и заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 18 сентября 2010

На самом деле вам не нужно присоединяться для этого - вместо этого вы можете сделать три отдельных выбора.

SELECT
(
    SELECT userName
    FROM TableA
    WHERE userID = 1
) AS userName,
(
    SELECT COUNT(*)
    FROM TableB
    WHERE leadID = 1
) AS count_leadID,
(
    SELECT COUNT(*)
    FROM TableB
    WHERE followID = 1
) AS count_followID

Результат:

userName  count_leadID  count_followID
UserA     2             1             
0 голосов
/ 18 сентября 2010
SELECT a.userName,
       b1.count(*) as leads,
       b2.count(*) as follows
FROM TableA a
INNER JOIN TableB b1 on a.userID = b1.leadID
INNER JOIN TableB b2 on a.userID = b2.followID
GROUP BY a.userName

В зависимости от того, как оптимизируется mySQL, и если у вас есть индекс для leadID и followID, это может ускорить запрос, особенно если вы собираетесь запрашивать только несколько пользователей, а не всех одновременно.

0 голосов
/ 18 сентября 2010
SELECT a.userName,
       SUM(IF(b.leadId = a.userId, 1, 0) as Leads,
       SUM(IF(b.followId = a.userId, 1, 0) as Follows
FROM TableA a
     TableB b
GROUP BY a.userName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...