2013-03-05 2 views
1

J'ai des tables de remorquage, le premier est mda_alert_info et le second est key_contacts_info. Pour chaque alerte configurée, il peut y avoir plusieurs contacts correspondants. Les deux tables sont reliées par 3 colonnes mda_id, stage_id et ref_number et pendant la requête je devrai passer des valeurs de chiffres pour ellesJOIN deux déclarations SQL SELECT où l'un a un enregistrement unique et l'autre a plusieurs enregistrements

Comment obtenir tout ce que je veux des deux tables en une seule instruction. Voici les instructions SELECT individuelles.

$result = mysql_query("SELECT `mda_name`, `project_name`, `ipc_id` FROM `mda_alert_info` WHERE `stage_id`=1 AND `mda_id`=2 AND `ref_number`= '444'"); 

Ce sera toujours retourner un enregistrement

$result = mysql_query("SELECT `contact_role`, `contact_email`, `contact_ph_number` FROM `key_contacts_info` WHERE `stage_id`=1 AND `mda_id`=2 AND `role`=0 AND `ref_number`='444'");  

Cela peut retourner plusieurs enregistrements

J'ai essayé pendant un certain temps et ne pouvait pas le faire fonctionner donc j'ai essayé d'ajouter un autre champ appelé ' moi 'aux deux tables qui est en train de concaténer les chaînes mda_id et stage_id puis j'ai essayé la requête ci-dessous.

$result = mysql_query("SELECT key_contacts_info.contact_role, key_contacts_info.contact_email, key_contacts_info.contact_ph_number, mda_alert_info.mda_name, mda_alert_info.project_name, mda_alert_info.ipc_id FROM key_contacts_info LEFT JOIN mda_alert_info ON key_contacts_info.me = mda_alert_info.me WHERE stage_id=1 AND mda_id=2 AND role=0 AND ref_number='444'"); 

Mais cela ne fonctionne toujours pas. Qu'est-ce que je fais de mal et comment puis-je le faire fonctionner.

MISE À JOUR:

Désolé, mais je dois préciser quelque chose sur la relation entre les tables les trois colonnes existent sur chaque table, mais ne sont pas les clés primaires sur l'une des tables

+1

je l'ai dit au-dessus, il y a 3 colonnes mda_id, stage_id et ref_number – Amanni

Répondre

2
SELECT a.*, b.* 
FROM mda_alert_info a 
     INNER JOIN key_contacts_info b 
      ON a.mda_id = b.mda_id AND 
       a.stage_id = b.stage_id AND 
       a.ref_number = b.ref_number 
WHERE b.role = 0 AND 
     a.stage_id = 1 AND 
     a.mda_id = 2 AND 
     a.ref_number = '444' 

Pour gagner encore plus connaissances sur les jointures, veuillez consulter le lien ci-dessous:

+0

je aurais besoin de donner des valeurs pour ref_number, mda_id et stage_id – Amanni

+0

@Amanni voir ma mise à jour. –

+0

Désolé, mais je devrais clarifier quelque chose sur la relation entre les tables les trois colonnes existent sur chaque table, mais ne sont pas des clés primaires sur l'une des tables – Amanni

0
select 
    a.mda_name, 
    a.project_name, 
    a.lpc_id, 
    k.contact_role, 
    k.contact_email, 
    k.contact_ph_number 
from mda_alert_info a 
join key_contacts_info k 
    on a.state_id = k.state_id 
    and a.mda_id = k.mda_id 
    and a.ref_number = k.ref_number 
where a.state_id = 1 
    and a.mda_id = 2 
    and a.ref_number = '444' 
    and k.role = 0 
; 
Questions connexes