У меня есть четыре таблицы, как это:Как присоединиться к таблицам в Mysql с пустым столом
компании (название, описание)
company_users (company_id, user_id)
пользователей (идентификатор, group_id)
user_profiles (user_id, fullname)
Я хочу перечислить кампании.
Мой код заключается в следующем:
SELECT companies.*, user_profiles.fullname as company_contact
FROM companies
INNER JOIN company_users ON companies.id = company_users.company_id
INNER JOIN users ON company_users.user_id = users.id AND users.group_id=500
INNER JOIN user_profiles ON users.id = user_profiles.user_id;
Когда я добавить новую кампанию не появляется. Потому что company_id не в company_users.
Как я могу это исправить?
Примечание: Кампания Eeach должна иметь только одного пользователя. group_id этого пользователя 500.
Спасибо
Edit:
Таблицы:
companies
1 | Test Company | Test Desciption
2 | Test Company 2 | Test Description 2
company_users
1 | 18 | 1
2 | 19 | 1
users
18 | 500
19 | 900
user_profiles
18 | 18 | Test Contact
19 | 19 | Test User
LEFT JOIN Результат:
1 Test Company Test Description Test Contact
1 Test Company Test Description NULL
2 Test Company 2 Test Description 2 NULL
INNER JOIN Результат:
1 Test Company Test Description Test Contact
мне это нужно:
1 Test Company Test Description Test Contact
1 Test Company 2 Test Description 2 NULL
пользователь LEFT JOIN вместо INNER JOIN это базовый SQL, это хорошее чтение http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins – Jaylen
Нет, это не так просто. Когда я использую LEFT, перечислены все компании со всеми пользователями. Мне нужно только список компаний, которые group_id eq 500. Я обновил свой ответ. Добавлены результаты запроса –