Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据多个条件连接并分组三个表-SQL_Sql_Ms Access_Join_Group By - Fatal编程技术网

根据多个条件连接并分组三个表-SQL

根据多个条件连接并分组三个表-SQL,sql,ms-access,join,group-by,Sql,Ms Access,Join,Group By,我正试图根据某些条件连接三个单独的表。以下是表格示例: 表A +----+------------+----------+---------+ | id | entry num | line num | inv line| +----+------------+----------+---------+ | 1 | 1 | 1 | 1 | | 2 | 1 | 1 | 2 | | 3 |

我正试图根据某些条件连接三个单独的表。以下是表格示例:

表A

+----+------------+----------+---------+
| id | entry num  | line num | inv line|
+----+------------+----------+---------+
|  1 |          1 |     1    | 1       |
|  2 |          1 |     1    | 2       |
|  3 |          2 |     1    | 1       |
|  4 |          2 |     2    | 1       |
|  5 |          3 |     1    | 1       |
|  6 |          3 |     1    | 2       |
|  7 |          3 |     1    | 3       |
+----+------------+--------+-----------+
表B

+----+------------+----------+---------+
| id | entry num  | line num | code    |
+----+------------+----------+---------+
|  1 |          1 |     1    | 100     |
|  2 |          2 |     1    | 370     |
|  3 |          2 |     2    | 120     |
|  4 |          3 |     1    | 300     |
+----+------------+--------+-----------+
表C

+----+------------+--------+-----------+
| id | rate       | amt    | code      |
+----+------------+--------+-----------+
|  1 |        25% |    $50   | 100     |
|  2 |        50% |    $20   | 370     |
|  3 |        50% |    $25   | 120     |
|  4 |        30% |    $150  | 300     |
+----+------------+----------+---------+
我需要最终的表如下所示,但我不知道如何编写语法:

最终表格

+----+------------+----------+---------+---------+---------+---------+
| id | entry num  | line num | inv line|   code  |    rate |    amt  |
+----+------------+----------+---------+---------+---------+---------+
|  1 |          1 |     1    | 1       | 100     |    25%  |    $50  |
|  2 |          1 |     1    | 2       | 100     |    25%  |    $50  |
|  3 |          2 |     1    | 1       | 370     |    50%  |    $20  |
|  4 |          2 |     2    | 1       | 120     |    50%  |    $25  |
|  5 |          3 |     1    | 1       | 300     |    30%  |    $150 |
|  6 |          3 |     1    | 2       | 300     |    30%  |    $150 |
|  7 |          3 |     1    | 3       | 300     |    30%  |    $150 |
+----+------------+----------+---------+---------+---------+---------+ 
最后,我需要将表A和表B连接起来,其中entry num和line num都匹配,但是接下来我需要显示inv行号的每一行

例如,条目编号3/行编号1将有3个发票编号。所有条目编号3/行编号1将有代码300、30%的费率和150美元的金额,但我需要清楚地看到有3个发票行


我曾尝试连接表,对它们进行分组,并获得总计数,但没有效果。谢谢你的帮助

我认为您需要在EntryNum和LineNum上的TableA和TableB之间创建联接,然后在代码上的TableB和TableC之间创建联接。您的SQL应该如下所示:

SELECT A.ID, A.EntryNum, A.LineNum, A.InvLine, B.Code, C.Rate, C.Amt
FROM TableC AS C INNER JOIN (TableB AS B INNER JOIN TableA AS A ON (B.LineNum = A.LineNum) AND (B.EntryNum = A.EntryNum)) 
ON C.Code = B.Code;
这将产生您想要的结果:

问候,