2010-07-07 4 views
1

j'ai deux requêtes, l'interrogation de la même table, mais en fonction des paramètres différents,joindre deux requêtes MySQL basées sur des paramètres

i alors besoin de mush ces deux ensembles de résultats ensemble en fonction des paramètres certian

//get initial text 
Q1 
SELECT 
campaign_id AS campaign_id, 
from_number AS mobile, 
received_msg AS join_txt, 
date_received AS join_txt_date 
FROM received_txts WHERE action_id = 4 AND msg_link_id = id; 

//get final text 
Q2 
SELECT 
campaign_id AS campaign_id, 
from_number AS mobile, 
received_msg AS final_txt, 
date_received AS final_txt_date 
FROM received_txts WHERE action_id = 4 AND msg_complete_id = id; 

/join these two queries on 
Q2.msg_link_id = Q1.id AND Q2.campaign_id = Q1.campaign_id AND Q2.from_number = Q1.from_number 

Répondre

2
SELECT 
    Q1.campaign_id AS campaign_id, 
    Q1.from_number AS mobile, 
    Q1.received_msg AS join_txt, 
    Q1.date_received AS join_txt_date, 
    Q2.received_msg AS final_txt, 
    Q2.date_received AS final_txt_date 
FROM received_txts Q1 JOIN received_txts Q2 
    ON Q2.msg_link_id = Q1.id 
    AND Q2.campaign_id = Q1.campaign_id 
    AND Q2.from_number = Q1.from_number 
WHERE Q1.action_id = 4 
    AND Q2.action_id = 4 
    AND Q1.msg_link_id = Q2.id 
    AND Q2.msg_complete_id = Q2.id 
+0

J'aurais utilisé une sous-requête sur action_id = 4, mais à part ça, j'irais avec ça. –

+0

Sous-requête? Je ne sais pas, pourquoi? – Amadan

0

utiliser une table virtuelle:

SELECT * 
FROM table AS t1 
JOIN (select ..) AS t2 
ON (t1.foo = t2.foo) 
+0

J'ai essayé de faire SELECT t1.campaign_id \t \t AS campaign_id, t1.from_number \t \t AS mobile, t1.received_msg \t \t AS join_txt, t1.date_received \t AS join_txt_date, t2.final_txt \t \t AS final_txt, t2.final_txt_date \t AS final_txt_date DE received_txts T1 (partie 2 ci-dessous) – Hailwood

+0

join ( SELECT id \t \t AS id, msg_complete_id \t AS msg_complete_id, msg_link_id \t AS msg_link_id, campaign_id \t AS campaign_id, FROM_NUMBER \t AS mobile, received_txt \t AS final_txt, \t date_received \t AS final_txt_date \t OÙ msg_complete_id = id ) AS t2 ON (t1.msg_link_id = t1.id ET t2.msg_link_id = t1.id ET t2.campaign_id = t1.campaign_id ET t2.from_number = t1.from_number ET t2. mais j'obtiens: erreur dans votre syntaxe SQL; near 'où msg_complete_id = id ) AS t2 ON (t1.msg_link_id = t1.id et t2.msg_li' – Hailwood

Questions connexes