2013-08-16 9 views
1

unitsprice과 같은 두 개의 테이블이 있습니다. 단위 테이블 필드는 unit1, unit2입니다. Price 테이블 필드는 id, rateper, price입니다. 이제 Price 테이블 rateper <=0 또는 Price table is empty과 같은 두 테이블을 연결하려면 unit1 else rateper을 반환하십시오. 나는 다음과 같은 쿼리를 작성하지만 postgresql 버전 9.0레코드가 있거나없는 테이블 연결

에게 단위 표를 사용하고

select case when rateper <=0 then unit1 else rateper from units,price 

을 wroking하지 않는 것이

+------+-----+ 
|Unit1 |Unit2| 
-------------- 
| 2 | 10 | 
| 1 | 20 | 
+------+------ 

가격 표

+------+-------------+---------+ 
|id + rate per + price | 
-------------------------------- 
|1  |0   | 100  | 
|2  |1   | 200  | 
|3  |2   | 300  | 
-------------------------------- 

Result : 

2 
1 
3 

가격 테이블 행이없는 경우 그 다음 결과는

입니다. 당신이 열을 지정해야 63,210
2 
1 
+0

와일드 자상을 어둠 속에서 : 당신은'LEFT OUTER JOIN'를 원한다. 귀하의 버전을 포함하고 약간의 노력을하기 때문에 +1; 나의 이전 제안을 경청 해 주셔서 감사합니다. –

+0

@CraigRinger는 각하에게 감사하지만 각 열에 외래 키가 없다는 것에 의심의 여지가 있습니다. – Sathish

+0

부울 결과를 반환하는 조건에 조인 할 수 있습니다. 두 테이블을 연결하는 * 방법이 필요하지만 기본/외래 키 관계를 기반으로 할 필요는 없습니다. 테이블, 데이터 및 예상 결과를 표시하지 않았거나 두 테이블을 어떻게 연결 할지를 설명 했으므로보다 구체적으로 설명하기가 어렵습니다. –

답변

0

은 당신이 테이블

select 
    case 
     when p.rateper <= 0 or p.rateper is null then u.unit1 
     else p.rateper 
    end 
from units as u 
    full outer join price as p on p.id = u.??? 

갱신 당신이 가입 완전 외부의 어떤 필요가 있다고 생각을 가입하려는. 나는 아직도 완전히 당신이 원하는 정확히 이해하지만이 쿼리를 시도하지 않습니다 해요 :

select 
    coalesce(u."Unit1", p."id") 
from Units as u 
    full outer join (select * from price where "rate per" > 0) as p on p."id" = u."Unit1"; 

sql fiddle demo

+0

답장을 보내 주셔서 감사하지만 외래 키가없는 테이블 – Sathish

+0

은 중요하지 않습니다. Price 테이블이 단위 행에 대해 비어 있는지 어떻게 결정합니까? –

+0

내 요구 사항을 참조하십시오 – Sathish