2015-06-23 85 views
0

查詢1:合併從兩個查詢信息到單個表

SELECT num_requerimiento, asunto 
FROM masivos_texto INNER JOIN envios_masivos 
ON id_masivos=id_envio; 

結果1:

+---------------------+---------------------+ 
| num_requerimiento |  asunto  | 
|---------------------+---------------------- 
|  1800   |  inscripcion  | 
|---------------------+---------------------+ 
|  1801   |  seguimiento  | 
+---------------------+---------------------+ 

問題2:

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; 

結果2:

+---------------------+---------------------+----------------------+ 
|  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   | 
+---------------------+-----------------+------------+------------+-------------------+ 
所需的結果的id_envio

/對應於num_requerimiento 1800 id_masivos是84, 和id_envio/id_masivos對應於num_requerimiento 1801是85, 和第二表中的estatus不能接受三個值,比ia爲您提供幫助。

UNION不起作用,它給了我第一個表,然後是第二個表,並且只有當選擇的列數相同時。

+0

哪個sql變種mysql或先生。 Softie – Drew

+0

@DrewPierce MySQL ... –

+0

好的,我會清理標籤碰到頂部 – Drew

回答

0

要使用SQL完成此操作,您需要一個與masivos_textoacuses_recibo表格相關的表格。我建議你創建一個表格。你可以稱它爲req_id或任何適合的東西。這通常稱爲JOIN表。它會有這個內容

num_requerimiento id_envio   
    1800    84 
    1801    85 

然後,你將能夠適當地加入你的第一個和第二個查詢。

無法在不知道表格行的情況下爲您編寫查詢。

+0

當然,我添加了一個'envios_masivos'表,它涉及'num_requerimiento'和'id_envio',結構爲'id | id_envio | num_requerimiento'' id是autoincremental。 –

+0

表acuses_recibo:id,id_envio,id_mat_referencia,id_tipouser,estatus –

+0

表masivos_texto:id_masivos,asunto,remite,mensaje,fecha,dirigido,adjunto,observaciones。 masivos_texto中的id_masivos和acuses_recibo中的id_envio是相同的,並且爲1到1. –

0

解決了!我需要使用別名每個SELECT,如添加的別名各選擇電平,象這樣:

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; 

和生成所需要的第三表。希望它能幫助未來的人。

+0

其中一部分是語言事物,當它們是結果集時說話表,再加上你從不顯示模式,因此人們失明 – Drew