sql - 大丑陋的SQL查询问题

标签 sql ms-access

我有两个表: 状态(status_id,desc1,desc2,desc3,desc4) Status_Level(status_level_id, desc, levelD, levelS)

连接位于 Status 中的 desc1..4 字段和 Status_Level 中的 desc。 我需要选择 status_id、levelD 和 levelS,其中 levelD 和 levelS 是所有四个描述中的最高级别。

我试过这个:

SELECT Status.status_id, MAX(levelS) AS ds_column, MAX(levelD) AS ss_column 
FROM Status, Status_level WHERE
Status_level.desc=Status.desc1 OR 
Status_level.desc=Status.desc2 OR 
Status_level.desc=Status.desc3 OR 
Status_level.desc=Status.desc4 
GROUP BY Status.status_id

我的 SQL 非常生疏,因此将不胜感激任何帮助。 谢谢。

编辑: 示例:

Status:
-----------------------------------------------------------
| 1 | ABC_LEVEL_1 | DEF_LEVEL_5| CBA_LEVEL_2 | ABC_LEVEL_4|
-----------------------------------------------------------
| 2 | ABC_LEVEL_1 | DEF_LEVEL_1| CBA_LEVEL_2 | ABC_LEVEL_1|
-----------------------------------------------------------
| 3 | ABC_LEVEL_4 | DEF_LEVEL_1| CBA_LEVEL_2 | ABC_LEVEL_4|
-----------------------------------------------------------

Status_Level:
---------------------------
| 1 | ABC_LEVEL_1 | 1 | 7 |
---------------------------
| 1 | DEF_LEVEL_5 | 5 | 6 |
---------------------------
| 1 | CBA_LEVEL_2 | 2 | 3 |
---------------------------
| 1 | ABC_LEVEL_4 | 4 | 5 |
---------------------------
| 1 | DEF_LEVEL_1 | 1 | 2 |

Desired output:

-------------
| 1 | 5 | 7 | <- 5 from DEF_LEVEL_5 and 7 from ABC_LEVEL_1
------------- 
| 2 | 2 | 7 | <- 2 from CBA_LEVEL_2 and 7 from ABC_LEVEL_1
-------------
| 3 | 4 | 5 | <- 4 from ABC_LEVEL_4 and 5 from ABC_LEVEL_4
-------------

最佳答案

如果你能创造these功能,那么你可以这样做:

SELECT Status.status_id, 
       MaxOfList(l1.levelD,l2.levelD,l3.levelD,l4.levelD) AS ds_column, 
       MaxOfList(l1.levelS,l2.levelS,l3.levelS,l4.levelS) AS ss_column
FROM Status s, Status_level l1, Status_level l2, Status_level l3, Status_level l4
WHERE l1.desc=s.desc1 AND l2.desc=s.desc2 
      AND l3.desc=s.desc3 AND l4.desc=s.desc4;

请注意,我假设 desc1-4 中不允许 null

关于sql - 大丑陋的SQL查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440204/

相关文章:

sql - 是否有一种特殊形式的 UPDATE 语句除了检查有效 SQL 外什么都不做?

java - JDBC PreparedStatement 奇怪的行为

java - 如何使用 PreparedStatement 从 Java 应用程序将 POINT 类型值插入到 Postgresql 数据库中

SQL - HAVING 与 WHERE

mysql - 如何用符号id编写请求sql

c# - 在 C# 中使用 Access 2010 数据库

vba - 使用链接表更新本地表(但没有主键)

java - 是否有任何基于文件的数据库,具有类似于 MS Access 但开源的并发每个文件用户 Access 权限?

java - 使用 ODBC 对包含问号的 Access 表名进行转义

database - 关闭 Access 数据库而无需打开应用程序外壳的 VBA 代码