首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

用c#如何写这样一句SQL语句?三表关联,有点困惑了!

2012-09-09 
用c#怎么写这样一句SQL语句?三表关联,有点困惑了!!!!!用c#怎么写这样一句SQL语句?三表关联,有点困惑了!!!!

用c#怎么写这样一句SQL语句?三表关联,有点困惑了!!!!!
用c#怎么写这样一句SQL语句?三表关联,有点困惑了!!!!!

表A
numA conntent
黄 好人
刘 坏人
张 傻瓜

表B
numA sun moon  
黄 很大 很小
黄 中间 一般大
刘 还好 微小

表C
numA sun star  
黄 很大 很小
张 中间 一般大


我想输出的字段是:
numA sun moon star conntent
黄 很大 很小 BULL 好人
黄 很大 NULL 很小 好人
刘 还好 微小 NULL 坏人
张 中间 NULL 一般大 傻瓜







[解决办法]
前面的少了一列,
select a.numa,b.sun,b.moon,c.star,a.conntent from 表a as a left join 表b as b on a.numa=b.numa 
left join 表c on a.numa=c.numa
[解决办法]
写这个不算问题,问题是逻辑
谁是first,谁是secondary?
看起来B是主要的?C是第二?A是第三?
另外写SQL语句和C#没啥关系。
[解决办法]
这是SQL,不是C#,代码如下:

SQL code
SELECT 表A.numA, sun, moon, null star, conntent 
FROM 表B,表A
WHERE 表B.numA = 表A.numA
UNION ALL
SELECT 表A.numA, sun,null moon, star, conntent
FROM 表C,表A
WHERE 表C.numA = 表A.numA
ORDER BY numA

[解决办法]
直接上代码了
SQL code
 
/*建表*/
create table tableA
(
numA varchar(10),
content varchar(10)
)
create table tableB
(
numA varchar(10),
sun varchar(10),
moon varchar(10)
)
create table tableC
(
numA varchar(10),
sun varchar(10),
star varchar(10)
)

/*插值*/
insert into tableA values ('黄','好人')
insert into tableA values ('刘','坏人')
insert into tableA values ('张','傻瓜')

insert into tableB values ('黄','很大','很小')
insert into tableB values ('黄','中间','一般大')
insert into tableB values ('刘','还好','微小')

insert into tableC values ('黄','很大','很小')
insert into tableC values ('张','中间','一般大')

/*查询*/
select a.numA,b.sun,b.moon,c.star,a.content
from tableA a
left join tableB b on a.numA=b.numA 
left join tableC c on a.numA=c.numA

[解决办法]
SQL code
 
CREATE TABLE  A
(
  numA varchar(10),
  conntent  varchar(30)
)
INSERT INTO A
SELECT '黄','好人' UNION ALL
SELECT '刘','坏人' UNION ALL
SELECT '张','傻瓜'


CREATE TABLE  B
(
  numA varchar(10),
  sun varchar(10),
  moon  varchar(30)
)
INSERT INTO B
SELECT '黄','很大','很小' UNION ALL
SELECT '黄','中间','一般大' UNION ALL
SELECT '刘','还好','微小'


CREATE TABLE  C
(
  numA varchar(10),
  sun varchar(10),
  star  varchar(30)
)

INSERT INTO C
SELECT '黄','很大','很小' UNION ALL
SELECT '张','中间','一般大'

select A.numA, C.sun, B.moon,C.star,A.conntent from A full join B on A.numA=B.numA
  left join C on A.numA=C.numA
/*
numA    sun    moon              star              conntent


---------- ---------- ------------------------------ ------------------------------ ------------------------------
黄      很大    很小              很小              好人
黄      很大    一般大              很小              好人
刘      NULL    微小              NULL              坏人
张      中间    NULL              一般大              傻瓜

(4 行受影响)
*/


[解决办法]
sql我就不写了,其实那张表作为主表是要看你需求来的,我看你的numA sun moon star conntent
输出字段,判断第二张表有两个字段,所以建议用第2张表做主表。
因为有些数据不是inner join就可以出来的会用到left join。
我个人认为应该是你根据需求认为那张表的数据为主,来根据查询。菜鸟的看法,仅供参考!!!

热点排行