쿼리를 함께 결합 할 수 있지만 결과가 도시, 지구 또는 정 지구인지 알 수있는 결과가 필요합니다. 내가 분명히 테스트하지는 못했지만 다음과 같은 것이 효과가있을 수도있다.
(
SELECT
city AS city,
NULL AS district,
NULL AS subdistrict,
rate AS rate
FROM postages
WHERE city=$city
) UNION (
SELECT
NULL,
district,
NULL,
rate
FROM postages
WHERE city=$city
AND district=$district
) UNION (
SELECT
NULL,
NULL,
subdistrict,
rate
FROM postages
WHERE city=$city
AND district=$district
AND subdistrict=$subdistrict
)
결과 집합 도시가 null가 아닌 행이 하나 이상 포함되어있는 경우
지구가 null이 아닌 하나 가도가 null가 아닌 사람은 당신은 유효한 결과 세트를 입수했습니다.
SELECT IFNULL(c.rate, IFNULL(d.rate, s.rate)) as rate FROM (
(SELECT rate, count(*) FROM postages where city = '$city') as c,
(SELECT rate, count(*) FROM postages where district = '$district') as d,
(SELECT rate, count(*) FROM postages where subdistrict = '$subdistrict') as s
)
당신은 그것을 다른 방법 ... 단지 지구 쿼리를 실행 할도 수입니다 경우 : 당신은 당신이 할 수있는 귀하의 예제에서이 같이 동일한 결과를 얻을 수 원한다면
위 쿼리 조건을 따른다고 가정합니까? 도시에 사용할 수있는 요금이 없다면, 구청 등의 요금을 받으시겠습니까? – Josh
@Josh : 예, 그런 식으로. –
각 쿼리는 하나의 행만 반환 할 것으로 기대합니까? 예를 들어 같은 도시와 다른 하위 계급이있는 여러 행이 있습니까? –