具有相同和不同列的两个mysql查询的联合结果

具有相同和不同列的两个mysql查询的联合结果,mysql,sql,database,Mysql,Sql,Database,我有个问题。有两个MySQL查询,有相同的列,也有不同的列。我希望合并两个查询的结果,我希望结果包含这两个查询的每一列结果(但相同的列只显示一次) 我试图解释: 问题1: SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname, pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case when p

我有个问题。有两个MySQL查询,有相同的列,也有不同的列。我希望合并两个查询的结果,我希望结果包含这两个查询的每一列结果(但相同的列只显示一次)

我试图解释:

问题1:

SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname, 

pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case 

when pcs_lineup.type = '2' then 1 else NULL end) AS starter, count(case when 

pcs_subs.id_person_in = pcs_lineup.id_person AND pcs_lineup.type = '3' then 1 else 

NULL end) AS subs
FROM pcs_lineup
JOIN pcs_persons ON pcs_lineup.id_person = pcs_persons.id AND pcs_lineup.id_club = 2
JOIN pcs_matchs ON pcs_lineup.id_match = pcs_matchs.id AND pcs_matchs.id_compet 

= 1 AND pcs_matchs.id_season = 1
LEFT JOIN pcs_subs ON pcs_lineup.id_person = pcs_subs.id_person_in
GROUP BY id_person
查询1的结果:

+-------------+------------+---------------+----------+-------+----------+------+
|  id_person  | firstname  |   lastname    | id_club  | type  | starter  | subs |
+-------------+------------+---------------+----------+-------+----------+------+
|        194  | Jesper     | Hansen        |       2  |    2  |       1  |    0 |
|        195  | Mikkel     | Andersen      |       2  |    3  |       0  |    0 |
|        197  | Alexander  | Scholz        |       2  |    2  |       1  |    0 |
|        198  | Erik       | Sviatchenko   |       2  |    2  |       2  |    0 |
|        199  | Kian       | Hansen        |       2  |    2  |       1  |    1 |
|        204  | Manjrekar  | James         |       2  |    3  |       0  |    0 |
|        207  |            | Paulinho      |       2  |    2  |       1  |    0 |
|        209  | Joel       | Andersson     |       2  |    2  |       2  |    0 |
|        214  | Jens       | Cajuste       |       2  |    3  |       0  |    0 |
|        215  |            | Evander       |       2  |    2  |       1  |    0 |
|        216  | Jakob      | Poulsen       |       2  |    3  |       0  |    0 |
|        217  | Ayo        | Simon Okosun  |       2  |    2  |       1  |    0 |
|        225  | Gustav     | Wikheim       |       2  |    2  |       1  |    0 |
|        226  | Mikael     | Anderson      |       2  |    3  |       0  |    1 |
|        229  | Awer       | Mabil         |       2  |    3  |       0  |    1 |
|        230  | Frank      | Onyeka        |       2  |    2  |       1  |    0 |
|        234  | Artem      | Dovbyk        |       2  |    3  |       0  |    1 |
|        235  | Júnior     | Brumado       |       2  |    2  |       1  |    1 |
+-------------+------------+---------------+----------+-------+----------+------+
问题2:

SELECT pcs_persons.id AS id_person, pcs_persons.firstname AS firstname, 

pcs_persons.lastname AS lastname, pcs_lineup.id_club, pcs_lineup.type, count(case 

when pcs_goals.id_match = pcs_matchs.id AND pcs_goals.id_person = 

pcs_lineup.id_person then 1 else NULL end) AS goal
FROM pcs_lineup
JOIN pcs_persons ON pcs_lineup.id_person = pcs_persons.id AND pcs_lineup.id_club = 2
JOIN pcs_matchs ON pcs_lineup.id_match = pcs_matchs.id AND pcs_matchs.id_compet 

= 1 AND pcs_matchs.id_season = 1
LEFT JOIN pcs_goals ON pcs_lineup.id_person = pcs_goals.id_person AND 

pcs_goals.goal_csc = 0
GROUP BY id_person
查询2的结果:

+-------------+------------+---------------+----------+-------+------+
|  id_person  | firstname  |   lastname    | id_club  | type  | goal |
+-------------+------------+---------------+----------+-------+------+
|        194  | Jesper     | Hansen        |       2  |    2  |    0 |
|        195  | Mikkel     | Andersen      |       2  |    3  |    0 |
|        197  | Alexander  | Scholz        |       2  |    2  |    0 |
|        198  | Erik       | Sviatchenko   |       2  |    2  |    1 |
|        199  | Kian       | Hansen        |       2  |    2  |    0 |
|        204  | Manjrekar  | James         |       2  |    3  |    0 |
|        207  |            | Paulinho      |       2  |    2  |    0 |
|        209  | Joel       | Andersson     |       2  |    2  |    2 |
|        214  | Jens       | Cajuste       |       2  |    3  |    0 |
|        215  |            | Evander       |       2  |    2  |    0 |
|        216  | Jakob      | Poulsen       |       2  |    3  |    0 |
|        217  | Ayo        | Simon Okosun  |       2  |    2  |    0 |
|        225  | Gustav     | Wikheim       |       2  |    2  |    0 |
|        226  | Mikael     | Anderson      |       2  |    3  |    0 |
|        229  | Awer       | Mabil         |       2  |    3  |    0 |
|        230  | Frank      | Onyeka        |       2  |    2  |    0 |
|        234  | Artem      | Dovbyk        |       2  |    3  |    0 |
|        235  | Júnior     | Brumado       |       2  |    2  |    0 |
+-------------+------------+---------------+----------+-------+------+
我想合并这两个表(我尝试了UNION和UNIONALL,但没有成功)。预期结果如下:

+-------------+------------+---------------+----------+-------+----------+------+-------+
|  id_person  | firstname  |   lastname    | id_club  | type  | starter  | subs |  goal |
+-------------+------------+---------------+----------+-------+----------+------+-------+
|        194  | Jesper     | Hansen        |       2  |    2  |       1  |    0 |     0 |
|        195  | Mikkel     | Andersen      |       2  |    3  |       0  |    0 |     0 |
|        197  | Alexander  | Scholz        |       2  |    2  |       1  |    0 |     0 |
|        198  | Erik       | Sviatchenko   |       2  |    2  |       2  |    0 |     1 |
|        199  | Kian       | Hansen        |       2  |    2  |       1  |    1 |     0 |
|        204  | Manjrekar  | James         |       2  |    3  |       0  |    0 |     0 |
|        207  |            | Paulinho      |       2  |    2  |       1  |    0 |     0 |
|        209  | Joel       | Andersson     |       2  |    2  |       2  |    0 |     2 |
|        214  | Jens       | Cajuste       |       2  |    3  |       0  |    0 |     0 |
|        215  |            | Evander       |       2  |    2  |       1  |    0 |     0 |
|        216  | Jakob      | Poulsen       |       2  |    3  |       0  |    0 |     0 |
|        217  | Ayo        | Simon Okosun  |       2  |    2  |       1  |    0 |     0 |
|        225  | Gustav     | Wikheim       |       2  |    2  |       1  |    0 |     0 |
|        226  | Mikael     | Anderson      |       2  |    3  |       0  |    1 |     0 |
|        229  | Awer       | Mabil         |       2  |    3  |       0  |    1 |     0 |
|        230  | Frank      | Onyeka        |       2  |    2  |       1  |    0 |     0 |
|        234  | Artem      | Dovbyk        |       2  |    3  |       0  |    1 |     0 |
|        235  | Júnior     | Brumado       |       2  |    2  |       1  |    1 |     0 |
+-------------+------------+---------------+----------+-------+----------+------+-------+

我希望一些专家能帮助我,因为我不知道如何才能做到这一点。非常感谢

根据您的两个查询,您执行分组的方式是:在每个查询上加盖戳记,以确保它们本身是可靠的结果(每个查询)。 这意味着联合不是解决这个问题的办法

我能想到的最接近的解决方案是将两个查询都包含为源(临时集)

例如:

SELECT ........
FROM (  query1 )  as q1
JOIN  (  query2 ) as q2   ON q2.id_person = q1.id_person

请同时发布原始的3张表格,以便有人能做出要求的结果。这里有六张表格…两天前我附上了