2012-07-30 20 views
1

我想創建一個SQL查詢,將選擇顯示的所有內容......但我有一個條件,總小時數!= 0。這有效,但我必須添加一個條件,將排除總小時的條件!= 0。MySQL選擇語句---顯示所有這些,除非這個---不太確定如何做到這一點

基本上,我需要查詢的樣子:AND project_timecard_task_days.total_hours = 0,除非task.type =「固定利率」

因此,「除非」的說法的部分是問題。任何幫助都感激不盡!

SELECT project_timecard_tasks.task_id, 
     project_timecard_tasks.datetime, 
     project_timecard_tasks.total_hours, 
     project_timecard_tasks.user_id, 
     project_timecard_tasks.project_id, 
     users.user_id, 
     users.firstname, 
     users.lastname, 
     users.billingrate, 
     tasks.id, 
     tasks.taskname, 
     tasks.billingoption, 
     tasks.fixedrate, 
     tasks.rate_schedule_id, 
     hourlyrates.rate_schedule_id, 
     hourlyrates.hourlyrate, 
     project_timecard_tasks.project_task_id, 
     project_timecard_task_days.project_task_id, 
     project_timecard_task_days.project_task_day_id, 
     project_timecard_task_days.total_hours, 
     project_timecard_task_days.comments, 
     project_timecard_task_days.invoiced 
FROM project_timecard_tasks 
     JOIN users 
     ON project_timecard_tasks.user_id = users.user_id 
     JOIN tasks 
     ON project_timecard_tasks.task_id = tasks.id 
     JOIN project_timecard_task_days 
     ON project_timecard_tasks.project_task_id = 
      project_timecard_task_days.project_task_id 
     JOIN hourlyrates 
     ON project_timecard_tasks.billing_code_id = hourlyrates.hourly_rate_id 
WHERE project_timecard_tasks.project_id = '$jobNumber' 
     AND project_timecard_task_days.total_hours != 0 
     AND project_timecard_task_days.invoiced != 1 

回答

3
...AND (project_timecard_task_days.total_hours != 0 OR task.type ="Fixed Rate")... 
1

只需使用OR

WHERE 
(
    project_timecard_tasks.project_id = '$jobNumber' 
    AND 
    project_timecard_task_days.total_hours != 0 
    AND 
    project_timecard_task_days.invoiced != 1 
) 
OR 
    task.type ="Fixed Rate" 

或者可能(取決於你如何想你的條件):

WHERE 
    project_timecard_tasks.project_id = '$jobNumber' 
    AND 
    project_timecard_task_days.invoiced != 1 
    AND 
    (
    project_timecard_task_days.total_hours != 0 
    OR 
    task.type ="Fixed Rate" 
) 
0

使用OR聲明。

... 
AND (project_timecard_task_days.total_hours != 0 OR task.type = "Fixed Rate") 
AND...