从具有三个外键的表中选择一个表[关闭]

Posted

技术标签:

【中文标题】从具有三个外键的表中选择一个表[关闭]【英文标题】:SELECT from table with three foregin keys to one table [closed] 【发布时间】:2012-03-21 20:43:30 【问题描述】:

我必须创建一个 SQL 语句,该语句从三个表中获取值,一个表是用户表,另一个是意见表,第三个表是主题表,其中四个外键是一个指向意见记录和rest 作为用户记录的单独键。

如何从该表中选择包含主题名称、意见值、主题教授和主题意见人的记录?

【问题讨论】:

也许这只是我,但这个问题写得不够好,无法理解和回答。特别是,您能否提供有关您的架构的更多详细信息(每个表的实际列名......至少 PK 和 FK) 请添加表格的定义 【参考方案1】:

好的,现在是星期六晚上,我感觉足够成熟,可以在没有数据模型的情况下解决这个问题。

您提供了三个查找表(主题、意见、用户)的名称,但没有提供实际的结构和列。所以我在做一些猜测。

select subjects.name as subject_name
       , opinions.value
       , o_users.name as opinion_guy
       , p_users.name as professor
from  opinions 
      join subjects on ( opinions.subject_id = subjects.id)
      join users as o_users on ( o_users.id = opinions.opinion_guy_id)
      join users as p_users on ( p_users.id = subjects.professor_id)

/

我意识到这个查询几乎肯定不适合您的架构,但它应该为您提供一些线索。否则,请给我们表结构、主键和外键等。

【讨论】:

以上是关于从具有三个外键的表中选择一个表[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

当我从具有其他外键的表中删除一个条目时,相应的记录也不会被删除

如何从一个表中选择另一个表中没有外键的记录

从具有 2 个外键的 2 个表中选择

如何在 SAP ASE Sybase 16 中从具有外键的表中删除行

从删除外键的表中选择会导致 ProgrammingError: 1146, "Table <tablename> 不存在"

如何从具有两个外键的表中访问列?