2

我已经坚持了两天的数据库作业......

我在 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 完成这个?

4

4 回答 4

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
于 2012-09-08T21:04:49.287 回答
0

I'm with Chase on this one, it seems like you want to do an SQL join like:

SELECT *
FROM TableR R, TableS S
WHERE R.id=S.id;

What this is saying is in plain english: Select all the columns/rows from both Table R and Table S where the primary key ID in Table R equals the same primary key ID value in Table S

Not sure which database you are using, but here's a bit more information.

于 2012-09-08T20:32:51.497 回答
0

好的,我的答案与其他人非常不同。

您说这两个表之间没有关系。其他人都试图在 RB 和 SB 之间建立关系,但你说没有关系。

所以,如果没有关系,那么你就不要放一个。所以你会得到: SELECT R. , S. FROM R,S

结果将是两个表中的每一列,返回的行将等于 R 中的行乘以 S 中的行。在上面的示例中,您将返回 9 条记录。

于 2012-09-08T22:54:35.370 回答
0

看起来您想要做的是按行号加入两个表。看看这个线程

有关如何执行此操作的示例。

于 2012-09-08T20:25:31.753 回答