SQL Query两个以表为条件获取多个表数据

时间:2016-10-02 15:05:46

标签: postgresql

我有四个表sa,at,ar,lv,

Sa table编组

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

在表格

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

ar table

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

lv table 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上写一个触发器。

任何肝脏都会非常明显。

1 个答案:

答案 0 :(得分: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';

返回预期的组合。根据您的需要,在触发器中或作为独立查询使用它。