【问题标题】:Try to select but leave blank if fail尝试选择但如果失败则留空
【发布时间】:2013-07-23 16:04:22
【问题描述】:

我有一个请求,我选择name, id, date, priority 等,我还选择category,因为该类别在另一个表中,我将它与JOIN 链接,问题是category 可以为空,如果它是empty 没有ID,没有ID 表示JOIN 不起作用,它不会显示没有类别的票,因为它无法选择类别名称,有没有办法“尝试”选择类别名称,如果不能,则将类别名称留空,但仍选择其他项目?

【问题讨论】:

  • 你想要一个 outer 连接。见A Visual Explanation of SQL Joins
  • 外部连接不起作用,当我将 JOIN itilcategories ON itilcategories.id = tickets.itilcategories_id 替换为 OUTER JOIN itilcategories ON itilcategories.id = tickets.itilcategories_id 时没有显示任何内容

标签: mysql select conditional-statements


【解决方案1】:

使用您提供的数据左连接将起作用。

使用这两个表:

    |Tickets                      |
    +--+--------+----------+------+
    |ID|Name    |Date      |Cat_id|
    +--+--------+----------+------+
    |1 |Ticket 1|2013-07-13|1     |
    +--+--------+----------+------+
    |2 |Ticket 2|2013-06-13|2     |
    +--+--------+----------+------+
    |3 |Ticket 3|2013-06-25|4     |
    +--+--------+----------+------+

    |Category   |
    +--+--------+
    |ID|Name    |
    +--+--------+
    |1 |sample 1|
    +--+--------+
    |2 |sample 2|
    +--+--------+
    |3 |sample 3|
    +--+--------+

使用此查询可以提供您要查找的内容:

    SELECT t.id, t.name
    ,t.date, c.name FROM `stack overflow`.tickets as t
     Left Join category as c on c.id = t.cat_id

我得到的结果是:

    |ID|Name    |Date      |Name    |
    +--+--------+----------+--------+
    |1 |Ticket 1|2013-07-13|Sample 1|
    +--+--------+----------+--------+
    |2 |Ticket 2|2013-06-13|Sample 2|
    +--+--------+----------+--------+
    |3 |Ticket 3|2013-06-25|NULL    |
    +--+--------+----------+--------+

【讨论】:

  • 问题是join是针对id的,我在join后选择了类别名称
  • 您能给我们举个例子来说明您的数据是什么样的吗?每个表中的两三行会很有帮助。
  • 在表tickets我有idnamedatecategory_id在表category我有idname我的完整查询有点复杂,所以我只是给你我认为你需要的信息。我选择tickets.id ticket.name ticket.date category.name 并在tickets.category_id = category.id 上加入类别,就像我说的问题是当没有类别时,ticket.category_id 中的id 为空并且不能选择类别.名称
  • 用整个查询编辑了我的第一篇文章,这样你就可以尝试看看有什么问题
猜你喜欢
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多