以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 有个SQL问题,希望路过的大神帮帮忙  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63259)

--  作者:jiskin
--  发布时间:2015/1/17 9:48:00
--  [求助] 有个SQL问题,希望路过的大神帮帮忙

我有一张表A ,有父ID 和ID 两列来表示递归关系,

还有张表B,有一列表A的行号 AID(表A的_identify)

我想直接用SQL来选取:当表A中的行或者该行的子项不存在于表B

 

不知道该如何写了,求帮忙,非常感谢


--  作者:Bin
--  发布时间:2015/1/17 9:52:00
--  
是判断某一行? 还是整个表?
--  作者:jiskin
--  发布时间:2015/1/17 9:54:00
--  
以下是引用Bin在2015-1-17 9:52:00的发言:
是判断某一行? 还是整个表?

 

BIN总 是整个表


--  作者:Bin
--  发布时间:2015/1/17 10:00:00
--  
select * fr om {表A} where _Identify not in (select AID fr om {表B})
--  作者:jiskin
--  发布时间:2015/1/17 10:08:00
--  
以下是引用Bin在2015-1-17 10:00:00的发言:
select * fr om {表A} where _Identify not in (select AID fr om {表B})

 

BIN总 这样只是表示 _identify行不在表B而已

如果表A该行不存在于表B但该行存在的子项却存在于表B那也不用显示该行


--  作者:Bin
--  发布时间:2015/1/17 10:12:00
--  
"还有张表B,有一列表A的行号 AID(表A的_identify)"     你一开始这么说的. 现在又说一套.

你到底在说什么.我搞不懂


是不是想这样

select * fr om {表A} where ID not in (select AID fr om {表B})

--  作者:jiskin
--  发布时间:2015/1/17 10:20:00
--  
以下是引用Bin在2015-1-17 10:12:00的发言:
"还有张表B,有一列表A的行号 AID(表A的_identify)"     你一开始这么说的. 现在又说一套.

你到底在说什么.我搞不懂


是不是想这样

select * fr om {表A} where ID not in (select AID fr om {表B})

 

表A

_identify    父ID  ID

1                       4

2                4     6

3                6     7

4                       8

5                       1

6                       2

7                2     9

 

表B

AID

2

4

 

 

那么我所需要的数据是表A这样的内容

_identify    父ID  ID

5                       1

6                       2

7                2     9

 

因为这些行包括这些行对应的子项都不存在于表B

[此贴子已经被作者于2015-1-17 10:21:45编辑过]

--  作者:Bin
--  发布时间:2015/1/17 10:25:00
--  
做不到,得递归查找才可以. 数据量大的话效率会非常差,你应该更改设计思路.