【问题标题】:mysql multiple INNER JOIN to add two table columns to another tablemysql 多个 INNER JOIN 将两个表列添加到另一个表
【发布时间】:2013-02-20 06:06:12
【问题描述】:

三个表

状态 : ID,member_1,member_2 -->

(eg. 12, member_Joseph, member_John ; 
     22, member_Jacob, member_Jarrod ; 
     31, member_Jarrod, member_John 
     11, member_John, member_Jacob)

提交:身份证,学生-->

(eg. 12, Amy ; 
     22, Brian; 
     31 Susan ; 
     11 Kyle) 

info : member_name, 联系方式 -->

(eg. member_Joseph, joseph@name.name; 
     member_Jacob, jacob@name.name ; 
     member_Jarrod, jarrod@name.name ; 
     member_John, john@name.name )

从查询构建的新表:

 member_Joseph, joseph@name.name, Amy; 
 member_Jacob, jacob@name.name, Kyle ; 
 member_Jarrod, jarrod@name.name, Brian, Susan ; 
 member_John, john@name.name, Amy, Susan, Kyle )

我想将所有学生的数组分配给状态表中的每个成员
例如。
array1 --> member_Joseph: 学生 1,学生 2,学生 3
array2 --> member_John: 学生 2,学生 4,学生 5
array3 -->member_Jacob: 学生 3,学生 5,学生 1

会是:

$query = db_query("
    SELECT info.member_name, submit.student  
    FROM {info} 
    INNER JOIN {status} 
    ON info.member_name = status.member_1
    INNER JOIN {status}
    ON info.member_name = status.member_2
    INNER JOIN {submit}
    ON submit.id = status.id
");
while($result = db_fetch_array($query)){
echo $result['student']; //iterate through members and print students for each
}

错误是:“不是唯一的表/别名”

(仅供参考:我使用的是 Drupal 6 语法)

【问题讨论】:

  • 我认为{status} 被解析为同一个别名两次,导致错误。
  • 问题是,我需要查看状态两次以获取分配的第一个和第二个成员的名称
  • ic,直到现在我才知道别名是什么。谢谢

标签: php mysql drupal select inner-join


【解决方案1】:

我认为应该是表info 应该加入两次,这样您就可以获得每个memberID 的member_name。您还需要为表提供别名,以便可以唯一标识它们,例如

SELECT  a.*, 
        b.member_name memberName1,
        c.member_name memberName2,
        // other columns you might want to show
FROM    status a        
        INNER JOIN info b
            ON a.member_1 = b.member_name
        INNER JOIN info c
            ON a.member_2 = c.member_name
        INNER JOIN submit d
            ON a.ID = d.ID

如需进一步了解联接,请访问以下链接:

【讨论】:

  • 我试图澄清 ID 只是表示 submit#,而 member_1 和 member_2 是包含分配给查看 submit# 的成员的列。谢谢你的链接!
  • @ingrid 你有什么问题? :D 或者查询对您有帮助吗?
  • @ingrid 你能添加样本记录和你想要得到的结果吗:D 这样我们就可以解决了。
  • 所以我这样做了。重组表可能是有意义的,以便我有一个以成员名称作为列的表,然后从上到下填写学生。那我就不需要这样做了。但这没有意义,因为行是不相关的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2016-03-31
  • 1970-01-01
相关资源
最近更新 更多