mysql - JOIN 两个 sql SELECT 语句,其中一个有单条记录,另一个有多条记录

标签 mysql sql select join left-join

我有两个表,第一个是 mda_alert_info,第二个是 key_contacts_info。对于每个警报设置,可能有多个对应的联系人。这两个表都由 3 列 mda_id、stage_id 和 ref_number 链接,在查询期间我将不得不为它们传递数字值

如何在一个语句中从两个表中获取我想要的所有内容。以下是单独的 SELECT 语句。

$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'");

这将始终返回一条记录

$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'");    

这可能会返回多条记录

我尝试了一段时间但无法让它工作,所以我尝试向两个表中添加另一个名为“我”的字段,这基本上是连接 mda_id 和 stage_id 字符串,然后我尝试了下面的查询。

$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'");

但是还是不行。我做错了什么以及如何让它发挥作用。

更新:

抱歉,但我应该澄清一下表之间的关系,这三列存在于每个表中,但在任何一个表中都不是主键

最佳答案

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'

要进一步了解有关联接的更多信息,请访问以下链接:

关于mysql - JOIN 两个 sql SELECT 语句,其中一个有单条记录,另一个有多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15227459/

相关文章:

sql - pgSQL : return all results, 但可能没有一个结果

mysql - 如何选择超过 4 个条件的记录

MySQL 从映射字段中选择

php - 当我插入从CSV文件获取的数据时,如何防止MYSQL表中出现重复记录

mysql - 如何将一个表中的一行更新到另一个表中?

javascript - 如何获取所选选项的值(value)?

javascript - 如何使用更改事件返回 meteor 中选定选项值的 ID?

mysql - 在 Mac OS X El Capitan 上为 python 构建 mysql 时出错

PHP MYSQL "Advanced"JOIN 查询

PHP 将 MySQL 导出为 CSV - 结果显示为 HTML