【发布时间】:2013-09-19 20:37:30
【问题描述】:
我在 MS Access 2010 中有 3 个表格,如下所示:
表格:设备
id | device_id | Company | Version | Revision |
-----------------------------------------------
1 | dev_a | Almaras | 1.5.1 | 0.2A |
2 | dev_b | Enigma | 1.5.1 | 0.2A |
3 | dev_c | Almaras | 1.5.1 | 0.2C |
*Field: device_id is Primary Key Unique String
*Field ID is just an auto-number column
表格:活动
id | act_id | act_date | act_type | act_note |
------------------------------------------------
1 | dev_a | 07/22/2013 | usb_axc | ok |
2 | dev_a | 07/23/2013 | usb_axe | ok | (LAST ROW for dev_a)
3 | dev_c | 07/22/2013 | usb_axc | ok | (LAST ROW for dev_c)
4 | dev_b | 07/21/2013 | usb_axc | ok | (LAST ROW for dev_b)
*Field: act_id contains device_id; NOT UNIQUE
*Field ID is just an auto-number column
表格:矩阵
id | mat_id | tc | ts | bat | cycles |
-----------------------------------------
1 | dev_a | 2811 | 10 | 99 | 200 |
2 | dev_a | 2911 | 10 | 97 | 400 |
3 | dev_a | 3007 | 10 | 94 | 600 |
4 | dev_a | 3210 | 10 | 92 | 800 | (LAST ROW for dev_d)
5 | dev_b | 1100 | 5 | 98 | 100 |
6 | dev_b | 1300 | 8 | 93 | 200 |
7 | dev_b | 1411 | 11 | 90 | 300 | (LAST ROW for dev_b)
8 | dev_c | 4000 | 27 | 77 | 478 | (LAST ROW for dev_c)
*Field: mat_id contains device_id; NOT UNIQUE
*Field ID is just an auto-number column
有没有办法查询表以获得如下所示的结果(来自设备的每个设备,并且仅从其他两个表中添加了最后一行 [参见示例输出表]):
查询结果:
device_id | Company | act_date | act_type | bat | cycles |
------------------------------------------------------------
device_a | Almaras | 07/23/2013 | usb_axe | 92 | 800 |
device_b | Enigma | 07/21/2013 | usb_axc | 90 | 300 |
device_c | Almaras | 07/22/2013 | usb_axc | 77 | 478 |
有什么想法吗?提前感谢您阅读并帮助我:)
【问题讨论】:
-
您在哪里说“其他两张桌子的最后一行”,请您说得更具体一点。订购标准是什么?
-
很抱歉造成混淆。因此,每个设备从设备和最后一行输入到表格矩阵和活动中。常规连接不起作用:S
-
最后一行到底是什么意思?如果您指的是这些示例中的最后一行,那么我们是否可以安全地假设按矩阵中的 tc 对每个设备进行排序将给出正确的顺序,或者我们应该使用循环还是其他一些标准?还有,活动呢?
-
依赖数据库以特定顺序返回行不是一个好习惯,除非您能够在 order by 子句中逻辑地描述该顺序。这可能适用于 MS Access,但不适用于许多 RDBMS。
-
我明白你的意思。但是,整个过程是由其他人设计的。我现在将添加一些自动编号列来记住层次结构。谢谢!
标签: sql database ms-access vba ms-access-2010