0

I have the following SQL Query

SELECT l.LoginName ,p.name as project_name, p.start_date as 
project_start_date, p.end_date as project_end_date, 
pe.budget, pe.start_date, pe.end_date  
FROM project_expenses_new pe 
INNER JOIN projects p ON  pe.project_uuid=p.uuid 
INNER JOIN LoginUsers l ON pe.employee_uuid=l.uuid 
WHERE pe.employee_uuid='8a373382-c921-11ec-a7c7-005056020962' AND 
('2021-08-01' BETWEEN  p.start_date AND p.end_date);

Basically I am using 3 tables but only 2 of those tables is relevant to the query. These tables are projects and projects_expenses_new. The two tables both have the fields start_date and end_date.

What I am trying to do is to check if the values of start_date and end_date in the project_expenses_new table has a non null value. in this case I will check if the date i am looking for is between the start_date and end_date of the project_expenses_new table. So if the value of pe.start_date and pe.end_date are not null the query will be:

SELECT l.LoginName ,p.name as project_name, p.start_date as 
project_start_date, p.end_date as 
project_end_date, pe.budget, pe.start_date, pe.end_date  
FROM project_expenses_new pe 
INNER JOIN projects p ON  pe.project_uuid=p.uuid 
INNER JOIN LoginUsers l ON pe.employee_uuid=l.uuid 
WHERE pe.employee_uuid='8a373382-c921-11ec-a7c7-005056020962' AND 
('2021-08-01' BETWEEN  pe.start_date AND pe.end_date);

If, on the other hand, the values of start_date and end_date on pthe project_expenses_new table is null, I want to query condition get the records that are between the project table start_date and end_date. These values are never NULL.

I am not sure how to incorporate an if condition in my query.

2 Answers 2

1

You can use IFNULL() to use one date if the other date is NULL.

WHERE pe.employee_uuid = '8a373382-c921-11ec-a7c7-005056020962'
AND '2021-08-01' BETWEEN IFNULL(pe.start_date, p.start_date) AND 
                         IFNULL(pe.end_date, p.end_date)
Sign up to request clarification or add additional context in comments.

Comments

1

If you must check whether both start_date and end_date are null or not:

SELECT l.LoginName ,p.name as project_name, p.start_date as 
project_start_date, p.end_date as project_end_date, 
pe.budget, pe.start_date, pe.end_date  
FROM project_expenses_new pe 
INNER JOIN projects p ON  pe.project_uuid=p.uuid 
INNER JOIN LoginUsers l ON pe.employee_uuid=l.uuid 
WHERE pe.employee_uuid='8a373382-c921-11ec-a7c7-005056020962' AND 

'2021-08-01' BETWEEN (case when p.start_date is null or p.end_date is null then 
pe.p.start_date else p.start_date end) and (case when p.start_date is null or p.end_date is null then pe.p.end_date else p.end_dateend);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.