请教关系数据库的SQL语句。

smalle 2004-09-03 11:05:48
表A
-ID
-B_ID
-AA
-AAA
-...

表B
-ID
-BB
-BBB
-...

其中B_ID与表B的ID多对一对应,现要求列出表B的所有数据,并且列出表A中有B_ID与对应ID相同的数据,本人初学关系型数据库,请指教。
以前我是先用表B查出所有的数据,每读一个表B数据就从表A中查一次,这样效率太低,有没有好的解决办法,谢了。
...全文
53 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cosio 2004-09-10
用left join!
from B left join B.ID=A.B_ID
回复
smalle 2004-09-03
记录里面A与B里面的数据摆放的顺序是怎么样的呢?是前边是A里面的全部数据,后全是B的数据。还是A一条,几条符合要求的B数据,再一条A,几条符合要求的B数据呢?
我想显示成这样:

第一个B.BB 和 (B_ID=第一个B.ID的所有)A.AA
第二个B.BB 和 (B_ID=第二个B.ID的所有)A.AA

得到你那个集合后怎么显示呢?
回复
Andy__Huang 2004-09-03
你要熟悉的還有
right join 右連,意思與左連恰好相反
inner join 內連,兩邊都符合條件的才選出來
full join 兩邊符合條件的,以及左邊不符合條件的,還以及右邊不符合條件的
回复
cosio 2004-09-03
select B.*, ' 列出B表的所有表数据
A.* from B left join A on B.ID=A.B_ID ' A表中B_ID等于B表中ID的数据
回复
Andy__Huang 2004-09-03
應該改成這樣
select A.*,B.* from A left join B on A.B_ID=B.ID

因為A表的B_ID与表B的ID多对一对应,所以把A表當成主表,B表當成從表
用左連,兩個表相連,無論條件什麼樣?主表的數據一定全部被選出來,從表符合條件的記錄被出來,不符合條件的記錄用null填充
回复
smalle 2004-09-03
可以解释一下这句的效果吗?得到的记录是怎么的?
回复
Andy__Huang 2004-09-03
select B.*,A.* from B left join A on B.ID=A.B_ID
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2004-09-03 11:05
社区公告
暂无公告