我在数据库上坚持了两天的作业......
我在MS Access中工作,我有两个表R和S,行数相同。他们没有任何关系。
假设表R只有两列(名为A, B)
,因此表S(名为B, C).
在表R中,只有三个记录:(a1,b1), (a1,b2), (a2,b1)
在表S中只有三个记录:(b1,c1), (b1,c3), (b2,c2)
我需要将这两个表连接成一个,所以新表将有四列(RA,RB,SB,SC)并将具有下一个记录:
(a1,b1,b1,c1),
(a1,b2,b1,c3),
(a2,b1,b2,c2)
这就是全部......问题是:我如何用SQL实现这一点?
答案 0 :(得分:3)
非常做作,但在MS Access中运行。
SELECT x.f0, x.F1, y.F0, y.F1
FROM (
SELECT DISTINCT r.F0, r.F1,
(select count(*)
from r a
where a.f0+a.f1<=r.f0+r.f1) AS Expr1
FROM r) AS x
INNER JOIN (
SELECT DISTINCT s.F0, s.F1,
(select count(*)
from s a
where a.f0+a.f1<=s.f0+s.f1) AS Expr1
FROM s) AS y
ON x.Expr1 = y.Expr1;
表S
F0 F1 <-- Field names
b1 c1
b1 c3
b2 c2
表R
F0 F1 <-- Field names
a1 b2
a2 b1
a1 b1
查询结果
x.F0 x.F1 y.F0 y.F1
a1 b1 b1 c1
a1 b2 b1 c3
a2 b1 b2 c2
答案 1 :(得分:0)
看起来你想要做的是按行号加入两个表。查看this thread
有关如何执行此操作的示例。
答案 2 :(得分:0)
我和Chase就这个问题,似乎你想做一个SQL连接,如:
SELECT *
FROM TableR R, TableS S
WHERE R.id=S.id;
这说的只是简单的英语:选择所有列> >> Table R
和{{1} } {strong} Table S
中的主键ID
等于Table R
ID
值
不确定您使用的是哪个数据库,但这里有点more information。
答案 3 :(得分:0)
好的,我的答案与其他答案截然不同。
你说两张桌子之间没有关系。其他人都试图在R.B&amp; S.B,但你说没有关系。
所以,如果没有关系,那么你就不要把它放进去。所以你得到的是: SELECT R. ,S。 FROM R,S
结果将是两个表中的每一列,并且返回的行将等于R中来自S行的行。在上面的示例中,您将获得9条记录。