【问题标题】:Rename for column names in inner Join重命名内部联接中的列名
【发布时间】:2013-07-08 08:05:50
【问题描述】:

我有 2 个这样的表:

Table 'c'

|  id  |  item_1  |   item_2  |
-------------------------------
|  1   |   1      |    2      |
-------------------------------

Table 'i'

|  id  |  name    | 
-------------------
|  1   |   item   |   
-------------------
|  2   |  item_2  |
-------------------

不,我需要从表 c 中获取包含项目名称的结果。所以我为此构建了一个内部 JOIN。

SELECT c.*, i.name FROM c 

INNER JOIN i ON 
c.item_1 = i.id 
OR 
c.item_2 = i.id 

这“很好”。但是我得到了类似的东西:

   |  id  |  item_1  |   item_2  |  name   |
    ----------------------------------------
    |  1   |   1      |    2      | item_2 |
    ----------------------------------------

问题很清楚 - 我需要为两个 item_id 取回 2 个名称,但只取回一个。那么是否可以为该列设置一个新名称?像这样:

SELECT c.*, i.name FROM c 

INNER JOIN i ON 
c.item_1 = i.id SET name AS name_1
INNER JOIN i ON 
c.item_2 = i.id SET name AS name_2

所以结果会是这样的:

   |  id  |  item_1  |   item_2  |  name_1   |  name_2 |
    ----------------------------------------------------
    |  1   |   1      |    2      | item_1 |  item_2   | 
    ----------------------------------------------------

【问题讨论】:

    标签: php mysql join inner-join


    【解决方案1】:

    类似的东西?

    SELECT c.*, 
           i1.name as name_1, 
           i2.name as name_2
      FROM c 
      INNER JOIN I as i1 
         ON c.item_1 = i1.id 
      INNER JOIN I as i2 
         ON c.item_2 = i2.id 
    

    【讨论】:

      【解决方案2】:

      这也是一样的

      SELECT c.*, 
             i1.name as name_1, 
             i1.name as name_2
        FROM c 
        INNER JOIN I as i1 
           ON c.item_1 = i1.id 
      

      【讨论】:

        【解决方案3】:

        尽管您的表格设计非常漂亮,但您可以使用别名多次加入表格。

        SELECT c.*, 
               i1.name as name1, 
               i2.name as name2 
        FROM (c INNER JOIN i AS i1 ON c.item1=i1.id_i) 
             INNER join i as i2 ON c.item2=i2.id_i
        

        但请重新考虑表格设计,它是 c 和 i 之间的简单 1:n 关系!

        【讨论】:

        • 这只是一个演示。在这种情况下,我需要这些表,它们之间的关系表没有意义。这只是一个简单的结构演示。但是谢谢(:
        猜你喜欢
        • 2022-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-03
        • 1970-01-01
        • 2014-04-19
        • 2011-11-27
        • 1970-01-01
        相关资源
        最近更新 更多