Используйте внутреннее соединение, левое соединение или правое соединение для объединения 2 таблиц

#mysql #subquery #project #union

#mysql #подзапрос #проект #объединение

Вопрос:

Я реализую проект, который поднимает мне следующие таблицы:

Для большей конкретности: первая таблица:

‘docs’ => doc_id, doc_type_type_id, clients_cli_id,
где doc_type_type_id

  1. счета-фактуры
  2. справочное руководство

Вторая таблица:

‘client’ => cli_id

Что я пытаюсь сделать, так это присоединиться к клиенту с документом, в котором мой запрос:

Показать клиенту его счет-фактуру и справочное руководство:

 SELECT c.cli_name, d1.doc_file as f1 , d2.doc_file as f2 FROM clients c INNER JOIN docs d1 ON d1.client_cli_id = c.cli_id INNER JOIN docs d2 ON d2.client_cli_id = c.cli_id WHERE d1.doc_fec=d2.doc_fec
  

Комментарии:

1. SO — это не школа или услуга обучения, вам нужно изучить основы самостоятельно. Затем опубликуйте свой код, если вы не можете заставить его работать, и мы поможем вам это исправить. Вы можете узнать о соединениях SQL здесь: blog.codinghorror.com/a-visual-explanation-of-sql-joins

Ответ №1:

     select * from docs
    inner join client on docs.clients_cli_id = client.cli_id
    where doc_type_type_id = 1
  

Что-то в этом формате должно предоставить вам все счета, присоединенные к клиенту.

Комментарии:

1. Вы могли бы получить результат, подобный тому, который был у клиента в той же записи, связанной с doc_type_type_id = 1 и doc_type_type_id = 2

2. Если вам нужны оба doc_types , тогда вам просто нужно исключить «где doc_type_type_id = 1» из запроса.

3. Как объяснить? Я уверен, что мой английский плохой. Что происходит, так это то, что параллельно отображаются счета-фактуры, накладные и клиент.