A表(物品) B表(处理方法) C表(关联表)
AID AName BID BName CID AID BID
1 猪肉 1 红烧 1 1 1
2 牛肉 2 清蒸 2 1 2
3 菠菜 3 清汤 3 2 1
4 苹果 4 生吃 4 2 2
5 3 3查询:物品有已有的方法和没有的方法:以猪肉为例,查询得到以下表
AID AName BID AName 是否
1 猪肉 1 红烧 有
1 猪肉 2 清蒸 有
1 猪肉 3 清汤 无
1 猪肉 4 生吃 无
怎么实现?
谢谢
AID AName BID BName CID AID BID
1 猪肉 1 红烧 1 1 1
2 牛肉 2 清蒸 2 1 2
3 菠菜 3 清汤 3 2 1
4 苹果 4 生吃 4 2 2
5 3 3查询:物品有已有的方法和没有的方法:以猪肉为例,查询得到以下表
AID AName BID AName 是否
1 猪肉 1 红烧 有
1 猪肉 2 清蒸 有
1 猪肉 3 清汤 无
1 猪肉 4 生吃 无
怎么实现?
谢谢
解决方案 »
- MSSQL 的危險動作, 各位小心中焦,中焦後請問有無方法解決呢?
- 能否提供一个存储过程,打印出所有用户表的表名/字段名/字段类型/说明的清单?
- 求一句Sql语句
- 一个纯属编程经验的问题:日期字段是使用smalldatetime还是char(8)好呢?
- 在触发器,如何访问触发前/后的数据?
- 我有两个表table1,table2 每个表都有area字段(而且输入的内容一样的)我想求出area=1时两表各有多少,=2时各有多少
- 怎样取消外键?急,大家帮忙!!!!!!!!!
- 怎么样导入sql server2000的数据库文件!急
- 这个存储过程怎么运行不对啊?
- 临时表的可见性问题?
- 求个sql语句.
- 求一SQL语句,在线等。。。。
insert into A values(1, '猪肉')
insert into A values(2, '牛肉')
insert into A values(3, '菠菜')
insert into A values(4, '苹果')
create table B(BID int, BName varchar(10))
insert into B values(1, '红烧')
insert into B values(2, '清蒸')
insert into B values(3, '清汤')
insert into B values(4, '生吃')
create table C(CID int, AID int, BID int)
insert into C values(1, 1, 1 )
insert into C values(2, 1, 2 )
insert into C values(3, 2, 1 )
insert into C values(4, 2, 2 )
insert into C values(5, 3, 3 )
godeclare @AName as varchar(10)
set @Aname = '猪肉'select m.* , isnull((select col = '有' from c where aid = m.aid and bid = m.bid),'无') 是否 from
(
select a.* , b.* from a,b where a.aname = @Aname
) m
drop table A,B,C/*
AID AName BID BName 是否
----------- ---------- ----------- ---------- ----
1 猪肉 1 红烧 有
1 猪肉 2 清蒸 有
1 猪肉 3 清汤 无
1 猪肉 4 生吃 无(所影响的行数为 4 行)
*/
a.aname,
b.bid,
b.bname,
case when c.aid = 1 then '有' else '无' end
from b left join a on 1= 1
left join c on c.bid = b.bid and a.aid = c.aid
insert into A values(1, '猪肉')
insert into A values(2, '牛肉')
insert into A values(3, '菠菜')
insert into A values(4, '苹果')
create table B(BID int, BName varchar(10))
insert into B values(1, '红烧')
insert into B values(2, '清蒸')
insert into B values(3, '清汤')
insert into B values(4, '生吃')
create table C(CID int, AID int, BID int)
insert into C values(1, 1, 1 )
insert into C values(2, 1, 2 )
insert into C values(3, 2, 1 )
insert into C values(4, 2, 2 )
insert into C values(5, 3, 3 )
goselect a.aid,
a.aname,
b.bid,
b.bname,
case when c.aid = 1 then '有' else '无' end
from b left join a on 1= 1
left join c on c.bid = b.bid and a.aid = c.aid
where a.aname = '猪肉'
drop table a,b,c/*
aid aname bid bname
----------- ---------- ----------- ---------- ----
1 猪肉 1 红烧 有
1 猪肉 2 清蒸 有
1 猪肉 3 清汤 无
1 猪肉 4 生吃 无(所影响的行数为 4 行)
*/
and d.aid=c.aid/*
猪肉 红烧 有
猪肉 清蒸 有
猪肉 清汤 无
猪肉 生吃 无
*/
insert into A values(1, '猪肉')
insert into A values(2, '牛肉')
insert into A values(3, '菠菜')
insert into A values(4, '苹果')
create table B(BID int, BName varchar(10))
insert into B values(1, '红烧')
insert into B values(2, '清蒸')
insert into B values(3, '清汤')
insert into B values(4, '生吃')
create table C(CID int, AID int, BID int)
insert into C values(1, 1, 1 )
insert into C values(2, 1, 2 )
insert into C values(3, 2, 1 )
insert into C values(4, 2, 2 )
insert into C values(5, 3, 3 )
godeclare @AName as varchar(10)
set @Aname = '猪肉'select m.* , isnull((select col = '有' from c where aid = m.aid and bid = m.bid),'无') 是否 from
(
select a.* , b.* from a,b where a.aname = @Aname
) m
drop table A,B,C
insert into A values(1, '猪肉')
insert into A values(2, '牛肉')
insert into A values(3, '菠菜')
insert into A values(4, '苹果')
create table B(BID int, BName varchar(10))
insert into B values(1, '红烧')
insert into B values(2, '清蒸')
insert into B values(3, '清汤')
insert into B values(4, '生吃')
create table C(CID int, AID int, BID int)
insert into C values(1, 1, 1 )
insert into C values(2, 1, 2 )
insert into C values(3, 2, 1 )
insert into C values(4, 2, 2 )
insert into C values(5, 3, 3 )
goselect a.*,b.*,case when c.cid is null then '无' else '有' end 是否 from a
cross join b
left join c
on c.bid=b.bid and c.aid=a.aid
where aName='猪肉'
godrop table a
drop table b
drop table c
go
from
(select a.aid,a.aname,b.bid,b.bname from a_t a,b_t b) t
left join c_t c
on t.aid=c.aid and t.bid=c.bid