2015-04-24 5 views
1

У меня есть две таблицы для информации о пользователе и группе. Я храню два идентификатора пользователя в таблице groupmember в таблице group_userid, а другой - group_memberid. Я хочу присоединиться к таблице пользователей с group_userid и с group_memberi d. Я попробовал этот запрос:присоединиться к одной таблице несколько раз в mysql

SELECT U.*, 
    S1.user_id as folusrid, 
    S1.first_name, 
    S1.last_name, 
    S2.user_id as follwginuserid, 
    S2.first_name, 
    S2.last_name 
FROM tbl_groupmemebers U 
JOIN tbl_user S1 ON (S1.user_id = U.group_userid) 
JOIN tbl_user S2 ON (S2.user_id = U.group_memberid) 
WHERE U.group_id = '2' 

и получил результат, но результат возвращается ко мне в той же строке, как это:

id group_id group_userid group_memberid group_joindate  folusrid first_name  last_name follwginuserid first_name last_name 
3  2   18    11   2015-04-24 12:02:36  18  Mohammadshoaib Swichmann   11   Clemen  Swichmann 

Я хочу, чтобы результат в двух отдельных столбцах.

+1

'Я хочу результат в двух отдельных столбцах. 'Подробнее расскажите об этом и, возможно, на примере. –

+0

Можете ли вы, пожалуйста, правильно форматировать свой вывод .... –

+0

Вы имеете в виду две отдельные строки? – Styphon

ответ

0

Попробуйте этот союз

(
    SELECT U.*, 
    S1.user_id as user_id, 
    S1.first_name, 
    S1.last_name, 
    'group_userid' as data_type 
    FROM tbl_groupmemebers U 
    JOIN tbl_user S1 ON (S1.user_id = U.group_userid) 
    WHERE U.group_id = '2' 
) 
UNION ALL 
(
    SELECT U.*, 
    S2.user_id as user_id, 
    S2.first_name, 
    S2.last_name, 
    'group_userid' as data_type 
    FROM tbl_groupmemebers U 
    JOIN tbl_user S2 ON (S2.user_id = U.group_memberid) 
    WHERE U.group_id = '2' 
); 

Это даст вам одну запись для каждого U.group_userid и одну запись для каждого U.group_memberid. Используйте столбец «data_type» (последний), чтобы определить, что именно.

+0

Спасибо за ваш ответ bro. в нем была какая-то ошибка, но я исправил ее и теперь отлично работает. Я принимаю это как ответ –

+0

Можете ли вы указать на ошибки, пожалуйста? Я хотел бы исправить их. –

+0

Каждая производная таблица должна иметь свой собственный псевдоним , поэтому для исправления этой ошибки я написал такой запрос: - select * from (SELECT U.id, S1.user_id as user_id, S1.first_name, S1.last_name FROM tbl_groupmemebers U JOIN tbl_user S1 ON (S1.user_id = U.group_userid), где U.group_id = '1' UNION SELECT U.id, S2.user_id as user_id, S2.first_name, S2.last_name FROM tbl_groupmemebers U JOIN tbl_user S2 ON (S2. user_id = U.group_memberid), где U.group_id = '1') user_info –

Смежные вопросы