由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 问个SQL问题- partial outer join
相关主题
请教大虾问题哈,包子谢哈Rookie's question again
SQL 查询已经解决.谢谢Modeler,mirthc,cheungche急问一个关于T-SQL的问题,谢谢
请求SQL语句SQL find distinct values in large table
SQL combine two tables into one table and add a new column[转载] 问个SQL问题
SQL copy a table into a new table and add a new column2个月前用过outer join
新手请教SQL 语法问题- alias 和 joinsql数据库实时更新问题
error of executing SQL query of string concatenation (转载问个SQL问题
aks a simple SQL questionSQL question...
相关话题的讨论汇总
话题: cid话题: eid话题: join话题: select话题: tname
进入Database版参与讨论
1 (共1页)
s*****d
发帖数: 7
1
有两个tables,都是多对多的关系
table 1
cid eid
1 A
1 B
1 C
2 A
2 D
3 B
table 2
cid eid
1 A
1 B
2 A
想要的结果
1 A
1 B
1 C
2 A
2 D
就是说 cid inner join,within cid, eid要 left join
谢谢啦
B*****g
发帖数: 34098
2
ignore table 2 eid

【在 s*****d 的大作中提到】
: 有两个tables,都是多对多的关系
: table 1
: cid eid
: 1 A
: 1 B
: 1 C
: 2 A
: 2 D
: 3 B
: table 2

s*****d
发帖数: 7
3

sorry Beijing,
给的sample 不好 如果 table 2 加入
cid eid
5 A
1 F
光join cid 不成啊

【在 B*****g 的大作中提到】
: ignore table 2 eid
N**N
发帖数: 1713
4
SELECT distinct t1.[cid]
,t1.[eid]
FROM [Table1] as t1
inner join [Table2] as t2
on t1.cid=t2.cid
left join [Table2] as t3
on t1.eid=t3.eid
要这个效果?

【在 s*****d 的大作中提到】
:
: sorry Beijing,
: 给的sample 不好 如果 table 2 加入
: cid eid
: 5 A
: 1 F
: 光join cid 不成啊

B*****g
发帖数: 34098
5
最好在解释清楚点,还不能确定要什么。
不过好像你需要的不是left join,full outer join似乎更合适。
至于partitial,没听说过,不过可以在where上面下文章。

【在 s*****d 的大作中提到】
:
: sorry Beijing,
: 给的sample 不好 如果 table 2 加入
: cid eid
: 5 A
: 1 F
: 光join cid 不成啊

s*****d
发帖数: 7
6
谢谢Beijing and NaCN. 说的是不清楚,例子给得也不好。实际数据太大太复杂,全是
多对多,没有任何key. 总之就是,一个column 要先 inner join, 另一个 column 在
column1 inner join 之后 再 outer join. 但是第一个inner join 两个 columns 都
要 ON. Like on t1.c1=t2.c11 and t1.c2=t2.c22, 但是这样又把t1.c2中的NULL
filtered out了。 NaCN的方法看起来可行,我去真数据上试试看。
再一次谢谢你们。

【在 B*****g 的大作中提到】
: 最好在解释清楚点,还不能确定要什么。
: 不过好像你需要的不是left join,full outer join似乎更合适。
: 至于partitial,没听说过,不过可以在where上面下文章。

s*****d
发帖数: 7
7
如果table2 还有其他 columns ,distinct 好像就不起作用了。

【在 N**N 的大作中提到】
: SELECT distinct t1.[cid]
: ,t1.[eid]
: FROM [Table1] as t1
: inner join [Table2] as t2
: on t1.cid=t2.cid
: left join [Table2] as t3
: on t1.eid=t3.eid
: 要这个效果?

B*****g
发帖数: 34098
8
那个数据库



【在 s*****d 的大作中提到】
: 谢谢Beijing and NaCN. 说的是不清楚,例子给得也不好。实际数据太大太复杂,全是
: 多对多,没有任何key. 总之就是,一个column 要先 inner join, 另一个 column 在
: column1 inner join 之后 再 outer join. 但是第一个inner join 两个 columns 都
: 要 ON. Like on t1.c1=t2.c11 and t1.c2=t2.c22, 但是这样又把t1.c2中的NULL
: filtered out了。 NaCN的方法看起来可行,我去真数据上试试看。
: 再一次谢谢你们。

s*****d
发帖数: 7
9
SQL server 2008 R2

【在 B*****g 的大作中提到】
: 那个数据库
:
: 在

B*****g
发帖数: 34098
10
I do not like it, but cannot think anything better for the present
SELECT t.*, COUNT(DISTINCT TNAME) OVER (PARTITION BY t.cid) cnt
FROM (
SELECT t1.*, 1 tname
FROM table1 t1
UNION ALL
SELECT t2.*, 2 tname
FROM table2 t2) t

【在 s*****d 的大作中提到】
: SQL server 2008 R2
相关主题
新手请教SQL 语法问题- alias 和 joinRookie's question again
error of executing SQL query of string concatenation (转载急问一个关于T-SQL的问题,谢谢
aks a simple SQL questionSQL find distinct values in large table
进入Database版参与讨论
w****w
发帖数: 521
11
SELECT *,(SELECT TNAME FROM T2 B
WHERE A.CID=B.CID AND A.EID=B.EID) AS TNAME
FROM T1 A
WHERE A.CID IN (SELECT CID FROM T2)
s*****d
发帖数: 7
12
理解你不喜欢的心情. 我消化一下将就用.-:)
感谢啊.

【在 B*****g 的大作中提到】
: I do not like it, but cannot think anything better for the present
: SELECT t.*, COUNT(DISTINCT TNAME) OVER (PARTITION BY t.cid) cnt
: FROM (
: SELECT t1.*, 1 tname
: FROM table1 t1
: UNION ALL
: SELECT t2.*, 2 tname
: FROM table2 t2) t

s*****d
发帖数: 7
13
这个方案数据大了不好用. 百万ROWS用 IN 会被喷死的
谢谢献计献策.

【在 w****w 的大作中提到】
: SELECT *,(SELECT TNAME FROM T2 B
: WHERE A.CID=B.CID AND A.EID=B.EID) AS TNAME
: FROM T1 A
: WHERE A.CID IN (SELECT CID FROM T2)

N**N
发帖数: 1713
14
那用(select distinct eid from table2)之类的subquery代替table2就行

【在 s*****d 的大作中提到】
: 如果table2 还有其他 columns ,distinct 好像就不起作用了。
w****w
发帖数: 521
15
百万ROWS算大?把in换成temp表,几亿row也没问题。

【在 s*****d 的大作中提到】
: 这个方案数据大了不好用. 百万ROWS用 IN 会被喷死的
: 谢谢献计献策.

1 (共1页)
进入Database版参与讨论
相关主题
SQL question...SQL copy a table into a new table and add a new column
SQL question: update a field新手请教SQL 语法问题- alias 和 join
请教set和select 的区别error of executing SQL query of string concatenation (转载
怎样快速得到两个表的交集aks a simple SQL question
请教大虾问题哈,包子谢哈Rookie's question again
SQL 查询已经解决.谢谢Modeler,mirthc,cheungche急问一个关于T-SQL的问题,谢谢
请求SQL语句SQL find distinct values in large table
SQL combine two tables into one table and add a new column[转载] 问个SQL问题
相关话题的讨论汇总
话题: cid话题: eid话题: join话题: select话题: tname