想象一下:SQL - 从多个表中选择多个字段
table1的
ID Type Priority
1212 A CRITICAL
1213 B MAJOR
1214 B MINOR
1215 A MAJOR
1216 A CRITICAL
1217 A CRITICAL
表2
ID STATE CHANGEDATE
1212 Pending 03-06-2015 17:47
1212 Closed 04-06-2015 05:47
1212 InProgress 03-06-2015 15:32
1212 Start 03-06-2015 15:07
1212 Opened 03-06-2015 13:47
- table1中包含了所有的ID信息
- 表2包含了所有不同的ID号信息
我需要什么:我需要从两个表中获取所有ID的信息。
我为什么挣扎:除了我的n00b水平(让我只说我不是Valhalla材料),我无法将第一张表和第二张表中的信息关联起来。
我想象什么:
ID Type Priority Opened Closed
1212 A CRITICAL 03-06-2015 13:47 -
1215 A MAJOR 06-06-2015 18:00 07-06-2015 18:00
1216 A CRITICAL 03-05-2015 13:10 04-06-2015 18:00
1217 A CRITICAL 01-06-2015 11:03 05-06-2015 18:00
UPDATE:
这是我尝试过,但是专注于一个特定的ID(1212):
SELECT
MAX (ID_A) AS "ID",
MAX (STATE_A) AS "ACTION NAME",
MAX (CHANGEDATE_A) AS "START",
MAX (STATE_B) AS "ACTION NAME",
MAX (CHANGEDATE_B) AS "END"
FROM (
SELECT
ID AS ID_A,
STATE AS STATE_A,
CHANGEDATE AS CHANGEDATE_A,
NULL AS ID_B,
NULL AS STATE_B,
NULL AS CHANGEDATE_B
FROM table2
WHERE table2.ID = '1212' AND table2.STATE = 'Start'
UNION ALL
SELECT
NULL AS ID_A,
NULL AS STATE_A,
NULL AS CHANGEDATE_A,
ID AS ID_B,
STATE AS STATE_B,
CHANGEDATE AS CHANGEDATE_B
FROM table2
WHERE table2.ID = '1212' AND table2.STATE = 'Close');
运行此我”会得到如下结果:
ID ACTION NAME START ACTION NAME END
1212 Start 03-06-2015 13:47 Close -
我需要的是同样的,但是这次对于所有的ID,生成一个列表(没有指定ID)。
欢迎使用计算器。请阅读[问]。提示#1:告诉我们你已经尝试了什么。提示#2:您需要将表2连接两次到表1. –
日期和时间遵循SQL中的特定格式/数据类型。这不是。修复,然后回到我们身边。 – Strawberry
我提出的日期格式仅仅是一个例子(这是我在SQL Developer中为了更好的阅读而配置它的方式)。 –