【发布时间】:2017-12-22 00:05:54
【问题描述】:
大家我有问题。我有两个单独运行良好的查询。但我想提出一个我尝试过的查询,但这些都行不通。我需要加入两个输出。
第一次查询:
SELECT q_internal_table.q_part_id,
q_external_table.q_external_id,
q_external_table.q_external_approve,
q_external_table.q_order_id,
q_internal_table.q_internal_id,
q_internal_table.q_internal_approve
FROM (SELECT parts.id AS q_part_id,
parts.order_id AS q_order_id,
external_reports.id AS q_external_id,
external_reports.approved AS q_external_approve
FROM parts
INNER JOIN external_reports
ON( parts.id = external_reports.part_id ))
q_external_table
INNER JOIN (SELECT parts.id AS q_part_id,
internal_reports.id AS q_internal_id,
internal_reports.approved AS q_internal_approve
FROM parts
INNER JOIN internal_reports
ON( parts.id = internal_reports.part_id ))
q_internal_table
ON( q_external_table.q_part_id = q_internal_table.q_part_id )
WHERE ( q_external_table.q_external_approve = 'Y'
OR q_internal_table.q_internal_approve = 'Y' )
第二次查询:
SELECT q_five_internal_table.q_five_part_id,
q_five_internal_table.q_five_internal_id,
q_five_internal_table.q_five_internal_approve,
q_five_external_table.q_five_external_id,
q_five_external_table.q_five_external_approve,
q_five_external_table.q_five_order_id
FROM (SELECT parts.id AS q_five_part_id,
parts.order_id AS q_five_order_id,
five_way_external_reports.id AS q_five_external_id,
five_way_external_reports.approved AS q_five_external_approve
FROM parts
INNER JOIN five_way_external_reports
ON( parts.id = five_way_external_reports.part_id ))
q_five_external_table
INNER JOIN (SELECT parts.id AS q_five_part_id,
five_way_internal_reports.id AS q_five_internal_id,
five_way_internal_reports.approved AS q_five_internal_approve
FROM parts
INNER JOIN five_way_internal_reports
ON( parts.id = five_way_internal_reports.part_id ))
q_five_internal_table
ON( q_five_external_table.q_five_part_id = q_five_internal_table.q_five_part_id )
WHERE ( q_five_external_table.q_five_external_approve = 'Y'
OR q_five_internal_table.q_five_internal_approve = 'Y' )
我试过这个查询:-
SELECT q_internal_external_table.*,
q_five_internal_external_table.*
FROM (SELECT q_internal_table.q_part_id,
q_external_table.q_external_id,
q_external_table.q_external_approve,
q_external_table.q_order_id,
q_internal_table.q_internal_id,
q_internal_table.q_internal_approve
FROM (SELECT parts.id AS q_part_id,
parts.order_id AS q_order_id,
external_reports.id AS q_external_id,
external_reports.approved AS q_external_approve
FROM parts
INNER JOIN external_reports
ON( parts.id = external_reports.part_id ))
q_external_table
INNER JOIN (SELECT parts.id AS q_part_id,
internal_reports.id AS q_internal_id,
internal_reports.approved AS q_internal_approve
FROM parts
INNER JOIN internal_reports
ON( parts.id = internal_reports.part_id ))
q_internal_table
ON( q_external_table.q_part_id = q_internal_table.q_part_id )
WHERE ( q_external_table.q_external_approve = 'Y'
OR q_internal_table.q_internal_approve = 'Y' ))
q_internal_external_table
INNER JOIN (SELECT q_five_internal_table.q_five_part_id,
q_five_internal_table.q_five_internal_id,
q_five_internal_table.q_five_internal_approve,
q_five_external_table.q_five_order_id,
q_five_external_table.q_five_external_id,
q_five_external_table.q_five_external_approve
FROM (SELECT parts.id AS q_five_part_id,
parts.order_id AS
q_five_order_id
,
five_way_external_reports.id AS
q_five_external_id,
five_way_external_reports.approved AS
q_five_external_approve
FROM parts
INNER JOIN five_way_external_reports
ON( parts.id = five_way_external_reports.part_id ))
q_five_external_table
INNER JOIN (SELECT parts.id AS q_five_part_id,
five_way_internal_reports.id AS
q_five_internal_id,
five_way_internal_reports.approved AS
q_five_internal_approve
FROM parts
INNER JOIN five_way_internal_reports
ON( parts.id = five_way_internal_reports.part_id ))
q_five_internal_table
ON ( q_five_external_table.q_five_part_id =
q_five_internal_table.q_five_part_id )
WHERE ( q_five_external_table.q_five_external_approve = 'Y'
OR q_five_internal_table.q_five_internal_approve = 'Y' ))
q_five_internal_external_table
ON ( q_internal_external_table.q_part_id =
q_five_internal_external_table.q_five_part_id )
查询结果:-
在这个查询中有三个结果。但我希望 7 结果与第一个查询结果一样。三个答案已经在第一个查询结果中。我也需要休息4。我认为问题出在ON q_internal_external_table.q_part_id = q_five_internal_external_table.q_five_part_id。但是不知道怎么解决。
请帮助我。提前致谢。
【问题讨论】:
-
1) 预期的结果是什么? 2) 你尝试过什么,这些尝试出了什么问题?
-
你的意思是 UNION - 谷歌
-
@Shadow:我更新了问题。我想加入两个答案。我还添加了我尝试过的 SQL。
-
类似
select * from (1st select) as t1 join (2nd select) as t2 on t1.q_part_id = t2.q_five_part_id. -
加入意味着什么?请演示使用问题中已有的 7 + 3 记录。