Mysql 将两个查询中的信息合并到一个表中

Mysql 将两个查询中的信息合并到一个表中,mysql,Mysql,问题1: 结果1: 问题2: 预期结果: 在期望的结果中,与num_requerimento 1800对应的id_envio/id_masivos为84, 与num_Requiremento 1801对应的id_envio/id_masivos为85, 第二个表中的estatus最多只能接受三个值,i.a.感谢您的帮助 UNION不起作用,它会给我第1个表,然后是第2个表,并且只有当选择的列数相同时。要使用SQL实现这一点,您需要一个与masivos\u texto和acuses\u recib

问题1:

结果1:

问题2:

预期结果:

在期望的结果中,与num_requerimento 1800对应的id_envio/id_masivos为84, 与num_Requiremento 1801对应的id_envio/id_masivos为85, 第二个表中的estatus最多只能接受三个值,i.a.感谢您的帮助


UNION不起作用,它会给我第1个表,然后是第2个表,并且只有当选择的列数相同时。

要使用SQL实现这一点,您需要一个与masivos\u texto和acuses\u recibo表相关的表。我建议您创建一个表。你可以称之为req_id或任何合适的名称。这通常称为联接表。它将有这样的内容

num_requerimiento    id_envio        
    1800               84
    1801               85
然后,您将能够适当地将第一个和第二个查询连接在一起


在不知道表的行的情况下,无法为您编写查询。

已解决!!我需要在每个选择中使用别名,就像在每个选择级别中添加别名一样,如下所示:

SELECT result1.num_requerimiento, result1.asunto, result1.id_masivos, result2.estatus, result2.conteo 
FROM 
(SELECT C.num_requerimiento, B.asunto, B.id_masivos 
FROM masivos_texto B INNER JOIN envios_masivos C
ON B.id_masivos=C.id_envio) as result1
INNER JOIN
(SELECT A.id_envio, A.estatus, count(estatus) as conteo 
from acuses_recibo A
WHERE A.id_envio IN (SELECT B.id_masivos FROM masivos_texto B where B.fecha >= '2014-01-01' AND B.fecha <= '2015-06-16')
GROUP BY A.id_envio, A.estatus) as result2
ON result1.id_masivos=result2.id_envio;

这将生成所需的第三个表。希望它对将来的人有所帮助。

哪种sql变体mysql或mr。Softie@DrewPierceMySQL…好的,我会清理标签,当然我已经添加了一个表envios_masivos,它关联num_Requeriento和id_envio,结构id | id_envio | num_Requeriemento id是自动递增的。表acuses_recibo:id,id_envio,身份证明、身份证明、可设定身份证明文件:身份证明文件、asunto、汇款人、mensaje、fecha、dirigido、adjunto、observaciones。masivos_texto中的id_masivos和acuses_recibo中的id_envio是相同的,并且是1比1。当它们是结果集时,其中一部分是语言方面的东西——会说话的表格,加上你从不显示模式,所以人们是盲人
SELECT id_envio, estatus, count(estatus)
FROM acuses_recibo
WHERE id_envio IN (SELECT id_masivos FROM cati_atencion.masivos_texto WHERE fecha >= '2014-01-01' AND fecha <= '2015-06-16') 
GROUP BY id_envio, estatus;
+---------------------+---------------------+----------------------+
|     id_envio        |        estatus      |    count(estatus)    |
|---------------------+--------------------------------------------+
|        84           |          0          |         4031         |
|---------------------+---------------------+----------------------+
|        84           |          1          |          632         |
+---------------------+---------------------+----------------------+
|        85           |          0          |         35635        |
+---------------------+---------------------+----------------------+
|        85           |          1          |         3711         |
+---------------------+---------------------+----------------------+ 
+---------------------+-----------------+------------+------------+-------------------+ 
|  num_requerimiento  |     asunto      |  id_envio  |  estatus   |  count(estatus)   | 
|---------------------+-----------------+------------+------------+-------------------+ 
|      1800           |   inscripcion   |     84     |     0      |      4031         |
|---------------------+-----------------+------------+------------+-------------------+ 
|      1800           |   inscripcion   |     84     |     1      |       632         | 
+---------------------+-----------------+------------+------------+-------------------+ 
|      1801           |   seguimiento   |     85     |     0      |       635         | 
+---------------------+-----------------+------------+------------+-------------------+ 
|      1801           |   seguimiento   |     85     |     1      |       711         |
+---------------------+-----------------+------------+------------+-------------------+ 
num_requerimiento    id_envio        
    1800               84
    1801               85
SELECT result1.num_requerimiento, result1.asunto, result1.id_masivos, result2.estatus, result2.conteo 
FROM 
(SELECT C.num_requerimiento, B.asunto, B.id_masivos 
FROM masivos_texto B INNER JOIN envios_masivos C
ON B.id_masivos=C.id_envio) as result1
INNER JOIN
(SELECT A.id_envio, A.estatus, count(estatus) as conteo 
from acuses_recibo A
WHERE A.id_envio IN (SELECT B.id_masivos FROM masivos_texto B where B.fecha >= '2014-01-01' AND B.fecha <= '2015-06-16')
GROUP BY A.id_envio, A.estatus) as result2
ON result1.id_masivos=result2.id_envio;