Mysql 将两个查询中的信息合并到一个表中
问题1: 结果1: 问题2: 预期结果: 在期望的结果中,与num_requerimento 1800对应的id_envio/id_masivos为84, 与num_Requiremento 1801对应的id_envio/id_masivos为85, 第二个表中的estatus最多只能接受三个值,i.a.感谢您的帮助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
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;