【问题标题】:MySQL join 2 tables with different columnsMySQL连接2个不同列的表
【发布时间】:2014-06-30 06:29:03
【问题描述】:

我有 2 个表,即联系人和用户。

我有这个问题:

 SELECT contacts.id AS 'contacts_id', contacts.assigned_user_id AS 'Assigned_to0' FROM  contacts  WHERE contacts.date_entered < DATE_ADD(NOW(), INTERVAL + 15 day) AND contacts.deleted = 0 limit 1;
+--------------------------------------+---------------+
| contacts_id                          | Assigned_to0  |
+--------------------------------------+---------------+
| cdb8dae0-eb8b-bd1e-5667-53984aa7a5dd | seed_sally_id |
+--------------------------------------+---------------+

我有来自用户的名字和姓氏

select id,first_name,last_name from users where id='seed_sally_id';
+---------------+------------+-----------+
| id            | first_name | last_name |
+---------------+------------+-----------+
| seed_sally_id | Sally      | Bronsen   |
+---------------+------------+-----------+

因此,在 Assigned_to0 的结果中,我需要 first_name + last_name 而不是 id(seed_sally_id) 进行第一个查询。 我假设这里需要一个 (LEFT)JOIN 语句?

提前致谢。

约翰

【问题讨论】:

  • 你试过什么?因为这看起来您以前尝试过一些...或者如果您只选择一个表,是否有理由在列 namen 之前使用表名?联系人 ID 与用户 ID 相同吗?

标签: mysql


【解决方案1】:
SELECT contacts.id AS 'contacts_id',
       concat(users.first_name,' ' ,users.last_name) as Assigned_to0
FROM contacts
INNER JOIN users ON contacts.assigned_user_id=users.id
WHERE contacts.date_entered < DATE_ADD(NOW(), INTERVAL + 15 DAY)
  AND contacts.deleted = 0
  AND users.id='seed_sally_id';

【讨论】:

  • 与 INNER JOIN 连接,这就是我想要的。谢谢
【解决方案2】:
SELECT c.id AS 'contacts_id', c.assigned_user_id AS 'Assigned_to0',
       u.first_name, u.last_name
FROM contacts c, users u
WHERE c.deleted = 0
  AND c.assigned_user_id=u.id
  AND c.date_entered < DATE_ADD(NOW(), INTERVAL + 15 DAY)
  AND u.id='seed_sally_id' limit 1;

未经测试

【讨论】:

    【解决方案3】:

    这个语句做的工作

    SELECT contacts.id AS 'contacts_id', contacts.assigned_user_id AS 'Assigned_to0' , users.first_name, users.last_name
    FROM  contacts  join users on contacts.Assigned_to0  =users.id
    WHERE contacts.date_entered < DATE_ADD(NOW(), INTERVAL + 15 day) AND contacts.deleted = 0 limit 1;
    

    【讨论】:

    • 删除 ON 子句 contacts.Assigned_to0 之间的空格
    猜你喜欢
    • 2013-10-20
    • 2020-01-28
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多