【问题标题】:How to concatenate two columns with joined table in mysql如何在mysql中将两列与连接表连接起来
【发布时间】:2015-01-24 23:29:32
【问题描述】:

我有两个表issue_detailspayees,如下所示:

表格:issue_details

+----------+------------+----------+----------+
| check_no | issue_date | payee_id | lddap_no | 
+----------+------------+----------+----------+
|        0 | 2015-01-01 |          | 11101-15 | 
|        1 | 2015-01-24 |          | 11101-15 |
|    34561 | 2015-01-24 | 10       |          |
|    34562 | 2015-01-24 | 13       |          | 
+----------+------------+----------+----------+

表格:收款人

+----------+--------------------+
| payee_id | payee_name         | 
+----------+--------------------+
| 1        | John Smith         | 
| 10       | Chen Lou           | 
| 11       | Mark Dello         |
| 12       | ANTRECCO           | 
| 13       | Shay Ridz          | 
+----------+--------------------+

我执行此查询是为了连接两个表来描述我的issue_details 表中的收款人姓名。

SELECT      
    issue_details.issue_date AS date,
    issue_details.check_no AS check_no,
    payees.payee_name AS payee 
FROM
    issue_details
INNER JOIN 
    payees ON issue_details.payee_id = payees.payee_id

结果

+----------+------------+----------+
| check_no | issue_date | payee    | 
+----------+------------+----------+
|    34561 | 2015-01-24 | Chen Lou |       
|    34562 | 2015-01-24 | Shay Ridz|       
+----------+------------+----------+

如果我这样做:

SELECT      
    issue_details.issue_date AS date,
    issue_details.check_no AS check_no,
    CONCAT(payees.payee_name, '', lddap_no) AS payee 
FROM
    issue_details
INNER JOIN 
    payees ON issue_details.payee_id = payees.payee_id

结果还是和上面一样。它不连接两列 payee_name(从表收款人加入)和lddap_no

这就是我想要发生的事情:

+----------+------------+----------+
| check_no | issue_date | payee    |  
+----------+------------+----------+
|        0 | 2015-01-01 | 11101-15 |      
|        1 | 2015-01-24 | 11101-15 |     
|    34561 | 2015-01-24 | Chen Lou |
|    34562 | 2015-01-24 | Shay Ridz|     
+----------+------------+----------+

请在此处帮助我的查询。将不胜感激。谢谢

【问题讨论】:

  • 您需要LEFT OUTER JOINIFNULL()COALESCE()NULLs 转换为空字符串。
  • 如何使用 IFNULL() ?请告诉我如何将其放入我的查询中。谢谢

标签: php mysql join


【解决方案1】:

只需将INNER JOIN 更改为LEFT JOIN

SELECT      issue_details.issue_date AS date,
            issue_details.check_no AS check_no,
            payees.payee_name AS payee 
FROM
            issue_details
            LEFT JOIN payees ON
            issue_details.payee_id = payees.payee_id

【讨论】:

    【解决方案2】:
    SELECT      id.issue_date AS date,
                id.check_no AS check_no,
                COALESCE( p.payee_name, id.lddap_no ) AS payee 
    FROM        issue_details id
                LEFT  JOIN payees p ON
                id.payee_id = p.payee_id
    

    SQLFiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      • 2011-02-22
      相关资源
      最近更新 更多