2016-10-02 20 views
0

我有四個表SA,在,AR,LV取多個表格數據,SQL查詢的兩個由條件的表的

薩表由

|Name| 
|s1| 
|s2| 
|s3| 

在表由

|Name| 
|t1| 
|t2| 
|t3| 

ar表包括

|Name| 
|r1| 
|r2| 
|r3| 

LV表consust

|Name| 
|l1| 
|l2| 
|l3| 

現在我有2個表PF,PFS

PF表由現在

|sa| at| ar| lv 
|s1| t1| r1| l1| 

如果pf的表有任何值 '所有',那麼它將更新的所有組合其他表數據轉換爲pfs

像sa有'All'

|sa| at| ar| lv| 
    |All| t1| r1| l1 

然後PFS表應該有

|sa| at |ar| lv| 
    |s1| t1| r1| l1| 
    |s2| t1 | r1| l1| 
    |s3| t1| r1| l1| 

這樣,如果PF由sa = 'All'at = 'All'然後s1,s2,s3t1,t2,t3所有組合成PFS

能否請你告訴我我怎麼能做到這一點更優雅的方式?

我知道我需要在pf上寫一個觸發器。

任何hep都會顯着。

回答

1

查詢:

select 
    coalesce(sa.name, sa) as sa, 
    coalesce(at.name, at) as at, 
    coalesce(ar.name, ar) as ar, 
    coalesce(lv.name, lv) as lv 
from pf 
left join sa on pf.sa = 'All' 
left join at on pf.at = 'All' 
left join ar on pf.ar = 'All' 
left join lv on pf.lv = 'All'; 

回報預期的組合。根據您的需要,將其用於觸發器或作爲獨立查詢。