我需要合并来自不同表的一些不同列。这些在这里列出。我只是似乎无法正确理解语法。我是一个初学者,请耐心等待我!
这些表是“报告”,“任务”和“ hist_unit”并且以下值相同
mission.id = report.mission_id
hist_unit.id = report.deployed_unit_id
尝试过以下方法
SELECT
mission_id AS mission_id,
deployed_unit_id AS depl_unit_id,
accepted AS accepted,
character_id AS character_id,
pilot_status AS pilot_status
FROM report
id AS depl_unit_id
faction AS faction
FROM hist_unit
mission.id AS mission_id
hist_date AS hist_date
FROM mission
我希望此查询执行的操作是将上面显示的列放在一起,并检查顶部显示的值是否彼此对应。然后,我希望它仅向我显示派系= 3和已接受= 1的行。然后我希望它仅显示条目
WHERE hist_date BETWEEN '1941-11-15 00:00:00.000' AND '1942-04-15 23:59:59:999'
输出应该是这样的
mission_id,depl_unit_id,faction,character_id,pilot_status,accepted,hist_date
类似这样的东西:
SELECT r.id AS report_id
, r.mission_id AS mission_id
, r.deployed_unit_id AS depl_unit_id
, r.accepted AS accepted
, r.character_id AS character_id
, r.pilot_status AS pilot_status
, h.id AS h_depl_unit_id
, h.faction AS faction
, m.id AS m_mission_id
FROM report r
JOIN hist_unit h
ON h.id = r.deployed_unit_id
JOIN mission m
ON m.id = r.mission_id
在SELECT关键字之后,列出所有要返回的表达式。
FROM
子句引用表。多个表应由JOIN关键字分隔,然后由ON
子句分隔。 (不需要INNER关键字;不需要CROSS关键字,但是在没有连接条件的情况下可以包含CROSS关键字,以帮助将来的读者;外部连接需要添加LEFT
(或RIGHT
关键字)。
考虑为每个表引用分配别名。
限定[[all列引用]具有分配的表别名(如果未分配别名,则为表名。)
[当SELECT列表中的列省略了AS column_name
时,将使用列名。例如,我们可以省略AS accepted
,并且第四列仍将接受该名称。避免返回具有理智名称的多列。这样做不是违法的,但是请考虑将列别名(结果集中的列名)修改为唯一的。即depl_unit_id
列之一可以重命名。