SQL INNER JOIN таблицы с разными именами строк - PullRequest
0 голосов
/ 08 июня 2019

Спасибо, что нашли время, чтобы прочитать это, это, вероятно, очень простой вопрос.Большинство поисковых запросов, которые я выполнял, показались оператору INNER JOIN более глубокими.

По сути, мой вопрос таков: у меня есть таблица отправления и получения с датами, когда товар был либо отправлен, либо получен.В таблице отгрузки (tbl_shipping) строка даты помечена как trans_out_date, а для получающей таблицы (tbl_receiving) строка даты помечена как trans_in_date.

Я могу просматривать транзакции, установленные для любой таблицы, из формы, введенной пользователем, но я хочу заполнить таблицу информацией, полученной из обеих таблиц, где критерии соответствуют.то есть.Если в принимающей таблице выполнено 10 транзакций в апреле и 5 в июне, а в таблице отгрузки - 15 транзакций в апреле и 10 в июне ... когда пользователь хочет просмотреть все транзакции в июне, он заполняет 15 транзакций, которые произошли вИюнь.

На данный момент я могу вытащить только из 1 таблицы с

SELECT * 
FROM tbl_shipping 
WHERE trans_out_date >= ‘from_date’ 
  AND trans_out_date <= ‘to_date’

Будет ли это подходящим синтаксисом для того, чего я хочу достичь?

SELECT * 
FROM tbl_shipping 
INNER JOIN tbl_receiving ON tbl_shipping.trans_out_date = tbl_receiving.trans_in_date 
WHERE 
    tbl_shipping.trans_out_date >= ‘from_date’ 
    AND tbl_shipping.trans_out_date <= ‘to_date’

Еще раз спасибо за то, что прочитали это.

1 Ответ

0 голосов
/ 08 июня 2019

Похоже, вы хотите union all, а не join:

SELECT s.item, s.trans_out_date as dte, 'shipped' as which
FROM tbl_shipping S
WHERE s.trans_out_date >= ? AND 
      s.trans_out_date <= ?
UNION ALL
SELECT r.item, NULL, r.trans_in_date as dte, 'received'
FROM tbl_receiving r
WHERE r.trans_out_date >= ? AND 
      r.trans_out_date <= ?
ORDER BY dte;

Примечания:

  • A JOIN может вызвать проблемы из-за пропажи данных(потому что даты не совпадают) или данные, которые дублируются (потому что существует несколько дат).
  • ? для параметра.Если вы вызываете это из приложения, используйте параметры!
  • Вы можете включить дополнительные столбцы для получения дополнительной информации в набор результатов.

Это может быть не тот формат результата, который вам нужен,Если нет, задайте другой вопрос с образцами данных и желаемыми результатами.

...