Я пытаюсь присоединиться к следующим таблицам:
В этой таблице содержатся отношения между пользователями. Один пользователь может быть связан со многими другими пользователями.
Я пытаюсь выбрать пользователя, а затем найти его связанных пользователей и контактов. Я попытался использовать соединение, я успешно могу получить либо контакты, либо пользователей, но не оба.
Я использовал следующий запрос:
select
contacts.id as contact_id,
users.id as user_id,
pivot.user_id2 as user2_id
from
'contacts'
inner join 'users' on 'contacts'.'user_id' = 'users'.'id'
inner join 'pivot' as 'pivot' on 'pivot'.'user_id' = 'contacts'.'user_id'
Предположим, что у меня есть следующие данные в таблицах
Пользователи:
id name 1 Sahil 2 Shubham 3 Xyz
Данные сводной таблицы
user_id user_id2 1 2
Данные таблицы контактов
id user_id name 1 1 Abc 2 1 XYZ
Теперь, что получается из запроса,
contact_id user_id user_id2 1 1 2 2 1 2
но мне нужно
contact_id user_id user_id2 1 1 null 2 1 null null 1 2
Я не могу понять, что я делаю неправильно.
Спасибо
Я решил проблему самостоятельно с помощью Союза, чтобы получить желаемые результаты.
Спасибо за вашу поддержку.
Кажется, вы хотите, чтобы запрос показывал несвязанные данные:
Я бы предложил два отдельных запроса для этого. Если вы хотите сделать это в одном запросе, используйте UNION ALL
для объединения двух результатов запроса:
select contact_id, user_id, null as user_id2 from contacts
union all
select null as contact_id, user_id, user_id2 from pivot_table;
Попробуйте это вместо этого:
SELECT B.id as contact_id, A.id as user_id, C.user_id2 as
user2_id
FROM 'users' A LEFT JOIN 'contacts' B
ON A.'id'=B.'user_id' LEFT JOIN 'pivot' C
ON A.'id'=C.'user_id';
См. MySQL Join Made Easy для понимания использования соединений.
SELECT users.id,GROUP_CONCAT(contacts.user_id,pivot.user_id SEPERATOR ",")contacts.user_id,pivot.user_id
FROM contacts INNER JOIN users ON contacts.user_id=users.id INNER JOIN pivot ON users.id=pivot.user_id;
INNER JOIN
неверен, между операторамиJOIN
нетAND
, поэтому удалите частьand
послеuser_id = users.id
. Также вам не нужно оборачивать каждый идентификатор в кавычки.