многократный запрос - PullRequest
       11

многократный запрос

0 голосов
/ 28 января 2012

Привет, я исследовал и у меня возникли проблемы с запросом mysql.
У меня есть таблица с именем "friends", в которой есть столбцы: id, user1 и user2.я пытаюсь создать запрос, в котором я могу получить 1 запись, в результате чего объединяются все пользователи из столбца user1 и все пользователи из столбца user2, которые относятся к конкретному пользователю, чтобы получить результат, в котором все эти пользователи являются друзьями,например, таблица "friends" может содержать:

****friends****
id   user1   user2
0     33       1
1     33       2
2     34       25
3     3        33
4     27       33

желаемый результат - это запись с именем "Friendships", в которой данные представляют собой одну строку, содержащую "1,2,3,27", поскольку этивсе идентификаторы пользователя, с которыми дружит пользователь 33я могу запустить:

SELECT (CAST(GROUP_CONCAT(user2) AS CHAR(10000) CHARACTER SET utf8)) as friendships from friends where user1 =33

, который будет возвращать «1,2», и я могу отменить его в отдельном запросе, чтобы получить «3,27», однако я пытаюсь получить результат водин запрос, если это возможно!вся помощь приветствуется :) 1008 *

Ответы [ 2 ]

1 голос
/ 28 января 2012

Я думаю, что это должно работать, если я правильно понимаю ваш вопрос

select GROUP_CONCAT(a.friendships, b.friendships) as x from (
    (SELECT (CAST(GROUP_CONCAT(user2) AS CHAR(10000) CHARACTER SET utf8)) as friendships from friends where user1 = 33) as a,
    (SELECT (CAST(GROUP_CONCAT(user1) AS CHAR(10000) CHARACTER SET utf8)) as friendships from friends where user2 = 33) as b
)
0 голосов
/ 28 января 2012
SELECT 
    CAST(GROUP_CONCAT(u) AS CHAR(10000) CHARACTER SET utf8) AS friendships 
FROM
  ( SELECT user2 AS u
    FROM friends 
    WHERE user1 = 33
  UNION ALL
    SELECT user1
    FROM friends 
    WHERE user2 = 33
  ) AS tmp
...