0

이것은 바보 같은 질문이지만 모든 것을 읽은 후 Where 절에 대한 대체 논리를 사용하여 저장 프로 시저를 만드는 올바른 방법을 알 수 없습니다.MYSQL 저장 프로 시저 쿼리 fallback 논리

나는 다음과 같은 쿼리를 가지고 :

내가 사용하고 있거나 4 조건과 일치하는 집합을 반환 것이기 때문에
SELECT FeeName, Amount, Category, VariableName 
FROM client_rates WHERE state_abv = state_abvIN 
AND Purchase= purchaseIN AND Category= CategoryIN And client_id=client_idIN AND 
agent_id=agent_idIN AND ((lender_id=lender_idIN AND county=countyIN) OR (lender_id=lender_idIN 
AND 
county='NA') OR (lender_id=1 AND county=countyIN) OR (lender_id=1 AND county='NA')); 

. 내가 원하는 것은 조건을 통해 "후퇴하는 것"입니다.

의미 (lender_id = lender_idIN 및 county = countyIN)가 값을 반환하는 세트를 반환합니다. 그러나 NULL 집합을 반환하면 다음 조건 집합 (lender_id = lender_idin AND county = 'NA') 등을 시도하십시오.

CASE는이 문제에 대해 작동하지 않을 것이고 중첩 된 IF EXIST 문을 사용했습니다. 그러나 각 쿼리가 두 번 실행되도록했습니다 (이보다 더 나은 솔루션이 있어야합니다).

제안 사항에 대해 도움을 주셔서 감사합니다.

+0

지금 COALESCE를 사용하려고합니다. 좋아, 그것은 효과가있는 것처럼 보이고 올바른 해결책입니다. 이 솔루션으로 더 좋은 옵션이나 잠재적 인 함정이 있다면 나는 모두 귀입니다. – user2409721

+0

실제적으로 합체는 대답이 아닙니다 .... 아직도 찾고 있습니다. 도움이 필요하십니까 – user2409721

+0

FOUND_ROW() 메소드를 찾았습니다.이 메소드는 0보다 큰지 확인한 다음 로직을 따를 수 있습니다. – user2409721

답변

0

질문이 명확하지 않습니다. ... IN 기호는 열이 아닌 매개 변수이고, 'NA'는 client_rates의 county에 대한 가능한 값이고, WHERE의 마지막 AND 조건에서는 행을 반환 할 위치 (...)이고, 그렇지 않으면 경우 (...), 등

SELECT FeeName, Amount, Category, VariableName 
FROM client_rates 
WHERE state_abv=state_abvIN 
AND Purchase=purchaseIN AND Category=CategoryIN 
AND client_id=client_idIN AND agent_id=agent_idIN 
AND CASE WHEN (lender_id=lender_idIN AND county=countyIN) THEN 1 
    WHEN (lender_id=lender_idIN AND county='NA') THEN 1 
    WHEN (lender_id=1 AND county=countyIN) THEN 1 
    ELSE (lender_id=1 AND county='NA') 
    END; 

PS (A CASE 표현은 최초의 진정한 언제까지 평가한다.), 그렇지 않은 경우 (...) : 하지만 그건에서 다른 쿼리입니다 다음과 같습니다 : CASE 앞에 모든 것이 일치하면 lender_idIN이 발견되지 않으면 lender_id에 1이 반환되고 (lender_id = 1인지 여부에 관계없이) countyIN을 찾지 못하면 county에 대해 'NA'가 반환됩니다. (군 = 'NA'가 있든 없든). (이것은 아마도 'NA'가 client_rates에서 county의 값이 아닐 수도 있습니다.) 다른 결과를내는 경우 : lender_idIN이 없지만 1의 client_rates lender_id 값이없는 경우 및/또는 countyIN이 없지만 client_rates 카운티 값 'NA'. 그런 다음 첫 번째 쿼리는 빈 테이블을 반환하지만 두 번째 쿼리는 lender_id에 대해 1을 반환하고 county에 대해서는 'NA'를 반환합니다. "의미 ..."를 분명하게 만드십시오! "성공 했음"이라는 쿼리를 포함시킵니다 (확실한 경우).

+0

도움 주셔서 감사합니다. 나는 새로운 질문으로 더 명확하게하려고 노력할 것입니다. – user2409721