Как написать SQL-запрос с множественным объединением?

0

У меня четыре таблицы, и я хотел объединить все три таблицы с одной таблицей.

Я перечислил свою проблему следующим образом:

Таблицы:

  1. users
  2. user_training
  3. user_courses
  4. user_certificates

Я хотел получить данные из таблиц [2,3,4] которые поле user_id совпадает с полем ID таблицы users.

Когда я пытаюсь INNER JOIN он дает мне результат для пользователей, которые являются общими во всех таблицах. Но я просто хотел проверить таблицы [2,3,4] с таблицей [1] Records.

Мой запрос...

SELECT  A.training_name AS 'training_name', C.course_name AS 'course_name',   D.certificate_name AS 'certificate_name'
FROM user_training AS A INNER JOIN users AS B ON A.user_id=B.ID INNER JOIN user_courses AS C ON B.ID = C.user_id INNER JOIN user_certificates AS D ON B.ID = D.user_id;

Заранее спасибо.

  • 2
    Используйте LEFT JOIN . Пользователи, не имеющие записей в _training , _courses или _certificates будут просто иметь значения NULL в этих полях.
  • 0
    Покажите нам запрос, который вы написали
Теги:
database
join

2 ответа

0

использовать left join

    select u.* from users u 
    left join user_training ut on ut.user_id=u.user_id 
    left join user_courses uc on uc.user_id=u.user_id 
    left join user_certificates uct on uct.user_id=u.user_id
0

С этим вы получаете всех пользователей и их соответствующие тренинги:

SELECT *
FROM 'users'
LEFT JOIN 'user_training' ON 'users'.'id' = 'user_training'.'user_id'

Изменение *_trainig на *_courses или *_certificates вернет всех пользователей с уважаемыми курсами или сертификатами.

Если вам нужно получить данные в одном запросе, попробуйте следующее:

SELECT *
FROM 'users'
LEFT JOIN 'user_training' ON 'users'.'id' = 'user_training'.'user_id'
LEFT JOIN 'user_courses' ON 'users'.'id' = 'user_courses'.'user_id'
LEFT JOIN 'user_certificates' ON 'users'.'id' = 'user_certificates'.'user_id'

Если пользователь не имеет тренинги, курсы, сертификаты все остальные поля будут null -ed.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню