I have the following example in my database:
| workshop_class_id | workshop_session_id | workshop_class_date |
|---|---|---|
| 209 | 29 | 2021-06-20 |
| 210 | 29 | 2021-06-21 |
| 213 | 31 | 2021-06-30 |
| 211 | 30 | 2021-06-30 |
| 214 | 31 | 2021-07-01 |
| 212 | 30 | 2021-07-03 |
| 219 | 33 | 2021-07-12 |
I would like to select by month and year, for example June 2021, but if the rows have relation with workshop_session_id and even if the date it’s not in June 2021, I would like to have these rows.
In the example, I have two rows in July related with dates in June, only the row with the workshop_session_id 33 will be excluded.
I’m using PostgreSQL.
Advertisement
Answer
This way DB can use a possible index on workshop_class_date
SELECT * FROM yourTable WHERE workshop_session_id IN ( SELECT t1.workshop_session_id FROM yourTable t1 WHERE t1.workshop_class_date BETWEEN date '2021-06-01' AND date `2021-06-30`) ;