我需要创建sql,它将列出具有相同植物的对
有3张桌子
Plant_Table
--------------
Snum Plant cost
A Rose 5.00
B Willow 6.00
C Lilly 7.00
Landscaper_Table
----------------
Lnum Lname Laddress
1 Dr Plant xxx st
2 Plant Scaper zzz st
3 George Gardener yyy st
land_plant_Table
---------------
Lnum Snum instock
1 A 3
2 A 3
2 B 3
2 C 3
3 A 3
3 C 3我需要列出成对的承包商,以及库存相同物资的承包商的物资名称。
我想要的结果的一个例子是
Landscaper1 Landscaper2 Landscaper 3 Plant
Dr plant George Gardener Plant Scaper Rose
Plant Scaper George Gardener --- Lilly我该怎么做呢?
发布于 2014-03-19 18:42:59
由于您没有提到数据库,我使用sql server解决了它。
select plant,
max(case when row='1' then name end) L1,
max(case when row='2' then name end) L2,
max(case when row='3' then name end) L3
from
(
select lt.lname as name, pt.plant as plant,
row_number() over(partition by pt.plant order by pt.plant) as row
from plant_table pt
inner join land_plant_Table lpt on lpt. snum = pt.snum
inner join Landscaper_Table lt on lpt.lnum = lt.lnum
) as s
group by plantfiddle
发布于 2014-03-19 15:39:29
据我所知,成对打印是不可能的……在两列中打印单个文件建议使用以下答案
只需将land_plant_Table与基于Lnum和Lnum的Plant_Table和Landscaper_Table连接起来,并使用where子句中的供应品过滤掉。
下面这样就行了(基于更新之前的最后一个表模式!)
via加入
select lt.lname, pt.plant
from plant_table pt
inner join land_plant_Table lpt on lpt. snum = ct.snum
inner join Landscaper_Table lt on lpt.lnum = lt.lnum
where pt.plant='rose' /* or pt.plant IN ('rose','willow','blah','blah','blah' )*/通过子查询实现的 :
首先获取snum ->,然后基于snum,获取基于lnum的lnum ->,获取lname
select lname from Landscaper_table where lnum in (
select lnum from land_plant_table where lnum in (
select snum from plant_table where plant IN ('rose','willow','blah','blah','blah' )
)https://stackoverflow.com/questions/22497848
复制相似问题