解决方案 »
- 电脑上开始装的VS2010自从安装了SQL2008后就出问题了,大神们帮帮忙啊
- C# html代码是字符串,大量的引号什么好方法处理
- c#本质论的 “井字棋”是什么规则呀?不懂规则就看不懂代码呀?
- .NET中StreamWriter问题
- 請教
- 刚接触socket。很简单的一个问题求助
- C# 两个数相乘怎么结果不对?
- OpenFileDialog记不住上次选的目录?
- WinForm中 禁止打开多个相同文件的问题 现在就30分了 以后可以加
- 求助,C#生成PDF文件可以设置Version号嘛?
- [讨论]发现计算连续加法,串行效率要比并行的高?
- 怎么正确关闭屏幕键盘?直接用CloseMainWindow();会报错
select a.numa,b.sun,b.moon,c.star from 表a as a left join 表b as b on a.numa=b.numa left join 表c on a.numa=c.numa
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#没啥关系。
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
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
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 行受影响)
*/
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 行受影响)
*/
输出字段,判断第二张表有两个字段,所以建议用第2张表做主表。
因为有些数据不是inner join就可以出来的会用到left join。
我个人认为应该是你根据需求认为那张表的数据为主,来根据查询。菜鸟的看法,仅供参考!!!
seelct a.numA,b.sun,moon,star,conntent from a
join b on a.numA=b.numA
join c on a.numA=b.numA and b.sun=c.sun
但是这个输出和你结果有差别,要么是你关系有问题,要么你没描述清楚
numA sun moon star conntent
黄 很大 很小 很小 好人
黄 中间 一般大 NULL 好人
刘 还好 微小 NULL 坏人
张 中间 NULL 一般大 傻瓜