나는 여러 사이트에서 계약을 맺은 고객에게 비용을 청구해야합니다.오라클의 외부 조인 및 자체 참조
사이트의 청구서 수신 주소에는 고객 주소로 청구되는 사이트와 다른 주소로 청구되는 사이트의 두 가지 유형이 있습니다. 사이트 종류는 'status'필드에 의해 처리됩니다. 사이트가 고객 주소로 청구되는 경우 필드는 'C'와 같습니다. 다른 사이트의 주소로 청구되는 경우 'A'이고 'bill_site_id'필드는 결제에 사용 된 'site_id'로 채워집니다. 하나의 쿼리에서 청구서를 보내야하는 주소를 검색하고 싶습니다 ...
고객이 두 개의 사이트를 가지고 있다고 가정 해 봅시다. (A는 결제를 위해 B를 나타냅니다); 요청에 분명히 두 사이트가 표시되지만 결제에만 사용되는 사이트 만 필요합니다 (B). 어떻게 검색하나요? 여기
는SELECT CASE wp.status
WHEN 'A'
THEN wp2.name
ELSE c.NAME
END AS NAME,
CASE wp.status
WHEN 'A'
THEN wp2.adress
ELSE c.street
END AS street,
CASE wp.status
WHEN 'A'
THEN wp2.city
ELSE c.city
END AS city,
CASE wp.status
WHEN 'A'
THEN wp2.postcode
ELSE c.postcode
END AS postcode
FROM customer c, site wp, site wp2, customer_site cwp
WHERE c.idcompany = cwp.idcompany
AND cwp.site_id = wp.site_id
AND wp2.site_id(+) = wp.bill_site_id
AND c.idcompany = :someId
GROUP BY wp.status,
wp2.name,
wp2.adress,
wp2.city,
wp2.postcode
'(+) = '구문이 너무 오래되었습니다. 오라클에는 'LEFT'와 'RIGHT'조인이 있습니다. –
그래,하지만 이전 스타일 구문이 내 응용 프로그램에서 어디서나 사용되므로 모든 사람들이 이렇게하는 방식을 바꾸고 싶지 않습니다 ... 어쨌든, 나는 이미 간단한 왼쪽 결합을 시도했으며 그 결과는 같습니다. – gobes
어떤 테이블에 "ch"가 앨리어스되어 있습니까? –