발견되는 경우 좌 가입 :MySQL은 - 아무것도 나는 다음과 같은 쿼리를 가지고
SELECT budgets_income.income_amount, budgets_income.rule_type, budgets_income_rules.day_of_week, budgets_income_rules.interval_week, budgets_income_rules.fixed_day, budgets_income_rules.last_day_month, budgets_income_rules.date_start, budgets_income_rules.date_end
FROM budgets_income
LEFT JOIN budgets_income_rules USING (income_id)
WHERE budgets_income.account_id = :account_id
AND
(
budgets_income_rules.date_start <= :date_end
)
budgets_income.rule_type
경우는 1 또는 2와 동일을, 다음 테이블 budgets_income_rules
거기에 내가 LEFT JOIN
로 얻을의 규칙있다 - 이건 괜찮아.
이제 규칙이 0과 같은 경우 규칙이 존재하지 않음을 나타냅니다. 규칙이 존재하지 않으므로 budgets_income_rules.date_start
필드는 행이 다른 행과 함께 페치되지 않음을 의미합니다 (WHERE budgets_income_rules.date_start <= :date_end
). 내가 이런 짓을, 모든
첫째 :
나는이 일을 시도 전혀 작동하지 않기 때문에
가 잘 작동하지 않았다.AND ( budgets_income_rules.date_start <= :date_end OR budgets_income_rules.date_start NOT EXISTS )
그 후, 나는이 같은 anoter 시도했다 : MySQL의이
LEFT JOIN
에 행을 찾을 수없는 경우, 다음 열이NULL
로 설정되어 있기 때문에 논리로 일했다
AND
(
budgets_income_rules.date_start <= :date_end
OR
budgets_income_rules.date_start IS NULL
)
.
이제 내 질문에 더 좋은 방법이 있을까요?
감사합니다.
당신의 방법은 괜찮습니다. 'IS NULL'은 왼쪽 결합 된 행이 존재하지 않는지 알아내는 표준 방법입니다. –
@MichaelBerkowski 확인해 주셔서 감사합니다. 그러나 나는 아래의 해답에서 건들 리타가 말한 것처럼 알 수있는 방법을 원했습니다. –