进货记录表(订单号,物品,类型,数量`) KEY(订单号)
数据例:
000001 苹果 1 1
000002 杯子01` 2 1
注:类型 "1"代表水果,"2"代表日常用品`
水果表 (ID,供货商) KEY(ID)
数据例:
苹果 供货商1
香蕉 供货商2
橘子 供货商3日常用品表 (ID,序列号,供货商)``KEY(ID,序列号)
数据例:
水壶 00 供货商1
杯子 01 供货商12
铅笔 02 供货商13现在要根据画面输入的内容来查询进货纪录
抽出内容:订单号,物品,数量,供货商三张表的连接方式为
类型`= "1" 时,进货记录表.物品 = 水果表.ID (左连接)
类型`= "2" 时,进货记录表.物品 = 日常用品表.ID || 日常用品表.序列号 (左连接)现在怎样根据画面输入的供货商来查询进货纪录?
想了半天好像只能分开查询,用UNION连接了
各位高手,有没有其他的方法?
数据例:
000001 苹果 1 1
000002 杯子01` 2 1
注:类型 "1"代表水果,"2"代表日常用品`
水果表 (ID,供货商) KEY(ID)
数据例:
苹果 供货商1
香蕉 供货商2
橘子 供货商3日常用品表 (ID,序列号,供货商)``KEY(ID,序列号)
数据例:
水壶 00 供货商1
杯子 01 供货商12
铅笔 02 供货商13现在要根据画面输入的内容来查询进货纪录
抽出内容:订单号,物品,数量,供货商三张表的连接方式为
类型`= "1" 时,进货记录表.物品 = 水果表.ID (左连接)
类型`= "2" 时,进货记录表.物品 = 日常用品表.ID || 日常用品表.序列号 (左连接)现在怎样根据画面输入的供货商来查询进货纪录?
想了半天好像只能分开查询,用UNION连接了
各位高手,有没有其他的方法?
FROM 进货记录表,水果表
WHERE 进货记录表.物品 = 水果表.ID(+)
AND 类型 = "1"
AND供货商 = ???
UNION ALL
SELECT 订单号,物品,数量,供货商
FROM 进货记录表,水果表
WHERE 进货记录表.物品 = 日常用品表.ID(+) || 日常用品表.序列号(+)
AND 类型 = "2"
AND供货商 = ???只有这样了?
where 物品 in (select ID from 水果表 b where a.物品 = b.ID and 供货商=@供货商)
or 物品 in (select ID from 日常用品表 c where a.物品 = c.ID || c.序列号 and 供货商=@供货商)--其中@供货商为变量
create table t1
(
id varchar(6),
name varchar(100),
typeshop int,
key int
)insert into t1 values('000001','苹果',1,1);
insert into t1 values('000002','杯子01',2,1);
commit;
create table t2
(
id varchar(100),
gname varchar(100)
)insert into t2 values('苹果','供货商1');
insert into t2 values('香蕉','供货商2');
insert into t2 values('橘子','供货商3');
commit;
create table t3
(
id varchar(100),
squ varchar(10),
gname varchar(100)
)insert into t3 values('水壶','00','供货商1');
insert into t3 values('杯子','01','供货商12');
insert into t3 values('铅笔','02','供货商13');
commit; select t1.*,
(case
when t1.typeshop = 1 then
(select t2.gname from t2 where t1.name = t2.id)
else
(select t3.gname from t3 where t1.name = t3.id(+) || t3.squ(+))
end) as gname
from t1
这个应该可以,,,数量字段用了一个KEY....汗,不好意思,呵呵
SELECT 订单号,物品,数量,供货商
FROM 进货记录表,水果表
WHERE case when type=1 then 进货记录表.物品 = 水果表.ID(+)
when type=2 then 进货记录表.物品 = 日常用品表.ID(+) || 日常用品表.序列号(+) end
and 供货商 = @cutomer
/