【问题标题】:sql select multiple refences to same tablesql选择对同一个表的多个引用
【发布时间】:2013-07-08 21:11:09
【问题描述】:
  • 我有一张表 VOUCHER,带有 ID、USER_ID、APPROVED_ID...

  • USER_ID 和 APPROVED_ID 是引用另一个表 USER 上相同键“ID”的索引

  • USER 有 ID、NAME、SECLEVEL...

  • 有些用户批准,有些用户制作凭证,如果我想打印带有ID,用户名和批准用户名的凭证。如何通过 SELECT 向用户引用不同的值?我正在尝试

    SELECT VOUCHER.ID,VOUCHER.DESCRIPCION,USER.NAME AS NORMALUSER,USER.NAME AS APPROVINGUSER FROM VOUCHER JOIN USER ON VOUCHER.USER_ID=NORMALUSER

但我不知道如何在我的代码中获取批准用户的姓名。我希望我能很好地解释自己

【问题讨论】:

  • SELECT VOUCHER.ID,VOUCHER.DESCRIPCION,USER.NAME AS NORMALUSER,USER.NAME AS APPROVINGUSER FROM VOUCHER JOIN USER u ON VOUCHER.USER_ID=u.NORMALUSER JOIN USER a ON VOUCHER.USER_ID=a.NORMALUSE 你可以给表加上别名并加入它两次
  • 正如答案所说,你需要两个 JOIN,而你有一个。当卡住时,如果您花时间绘制模型,包括关系,当您缺少 JOIN 时会更加明显。铅笔和纸是被低估的解决问题的工具。
  • 我被这些小东西弄疯了,谢谢大家

标签: mysql sql select join foreign-keys


【解决方案1】:

只需使用另一个连接再次添加USER

SELECT 
    VOUCHER.ID,
    VOUCHER.DESCRIPCION,
    U1.NAME AS NORMALUSER,
    U2.NAME AS APPROVINGUSER 
FROM VOUCHER 
JOIN USER U1 ON VOUCHER.USER_ID=U1.NORMALUSER
JOIN USER U2 ON VOUCHER.USER_ID=U2.APPROVINGUSER 

【讨论】:

  • 只有一件事,请更正.. JOIN USER U1 ON VOUCHER.USER_ID=U1.NORMALUSER JOIN USER U2 ON VOUCHER.USER_ID=U2.APPROVINGUSER USER_ID 不应与 NORMALUSER 进行比较,因为 NORMALUSER 是不是id,是名字(应该是VOUCHER.USER_ID=U1.ID)
  • 我现在注意到它不会过滤普通用户的结果,我的意思是我只想显示 1 个用户制作的凭证,我目前正在处理它,但如果你能帮忙那太好了
  • @aXul 如果您还有其他问题,那么可能值得再问一个问题
猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 1970-01-01
  • 2012-09-04
  • 2018-02-07
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多