Несколько предложений ON в JOIN - PullRequest
0 голосов
/ 24 апреля 2020

Можно ли иметь два ON оператора в JOIN?

У меня есть две таблицы:

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| start_date    | date    |
| end_date      | date    |
| price         | int     |
+---------------+---------+

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| purchase_date | date    |
| units         | int     |
+---------------+---------+

Когда я делаю JOIN, я пишу: ON table1.product_id=table2.product_id. Но как я могу добавить предложение о том, что purchase_date также находится между start_date и end_date. Я не могу получить правильный ответ, когда использую оператор WHERE.

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Вы можете использовать МЕЖДУ

SELECT t1.*, t2.*
FROM table1 t1
INNER JOIN table2 t2
  ON t1.product_id = t2.product_id
  AND t2.purchase_date BETWEEN t1.start_date AND t1.end_date
1 голос
/ 24 апреля 2020

Вы можете добавить несколько условий в предложении ON

SELECT table1.*, table2.*
FROM table1
LEFT JOIN table2
  ON table1.product_id = table2.product_id
  AND table2.purchase_date >= table1.start_date
  AND table2.purchase_date <= table1.end_date
-- ADD WHERE CLAUSE HERE IF NEEDED
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...