如何从sql中的四个表中进行选择?

Posted

技术标签:

【中文标题】如何从sql中的四个表中进行选择?【英文标题】:How to Select from four tables in sql? 【发布时间】:2015-04-25 09:29:55 【问题描述】:

这是表结构

链接

链接 ojectidfk uidfk

项目

项目ID uidfk 项目名称

试试

useridfk ojectidfk goyidfk

血腥

戈里德 血腥的名字

我想要做的是从ojects 中选择ojectname,其中plinks projectidfk 在ojects 和plinks 中是相同的,但是从尝试中选择所有内容,其中ojectid 等于ojectsid,其中pinks link = 8493284 AND gory id = try goryidfk

【问题讨论】:

【参考方案1】:
Select obj.objectnamem, try.* from objects as obj 
    inner join plinks on plinks.projectidfk = obj.ojectid
    inner join try on try.projectidfk = obj.ojectid
    inner join gory on gory.goryid = try.goryidfk 
where plinks.link = 8493284

【讨论】:

【参考方案2】:

尝试加入所有四个表并使用 where 子句作为链接​​:

SELECT o.objectName, t.*
FROM ojects o INNER JOIN plinks p ON o.ojectId = p.ojectidfk
INNER JOIN try t ON o.ojectid = t.ojectidfk
INNER JOIN gory g ON g.goryid = t.goryidfk
WHERE p.link = 8493284

【讨论】:

【参考方案3】:

使用简单的JOIN 应该可以为您做到这一点。您只需通过约束连接表,然后从这些表中检索您想要的任何内容。

请注意,如果您编写伪代码,它看起来与实际代码非常相似。您需要使用INNER JOINs,因为您想确定存在共享所有这些关系并符合您在plinks.link 上的条件的行。

SELECT o.ojectname, t.*
FROM
  ojects o
  INNER JOIN plinks p ON p.ojectidfk = o.ojectid
  INNER JOIN try t ON t.ojectidfk = o.ojectid
  INNER JOIN gory g ON g.goryid = t.goryidfk
WHERE 
  p.link = 8493284 

【讨论】:

以上是关于如何从sql中的四个表中进行选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何提高 SQL 查询的性能以从 2 个表中进行选择

如何选择每个类别最新的四个项目?

如何选择每个类别最新的四个项目?

仅使用一个 SQL 请求在 2 个表中进行选择 [重复]

如何从sql数据库中的2个表中获取多列数据?

如何从1个表中选择许多行并将其插入另一个表中特定行的特定JSONB字段中?但是在单个原始SQL查询中