gpt4 book ai didi

mysql - 从 3 个绑定(bind)在一起的表中选择什么是最佳解决方案?

转载 作者:行者123 更新时间:2023-11-29 12:59:55 25 4
gpt4 key购买 nike

我是数据库新手,遇到以下情况:我有 2 个名为 VulnerabilityAlertDocumentVulnerabilitySolution 的主表。

这两个表的列是这样的:

漏洞警报文档列:

Id

VulnerabilityAlertId

SourceId BugTraqID

Title

..........

..........

..........

漏洞解决方案栏:

Id

Description

这两个表通过由名为 VulnerabilityAlertDocument_VulnerabilitySolution 的第三个表实现的多对多关系相互关联,其中每一行都绑定(bind)到一行VulnerabilityAlertDocument 带有一行 VulnerabilitySolution(使用这些表的 id)

VulnerabilityAlertDocument_VulnerabilitySolution 列:

VulnerabilityAlertDocumentId

VulnerabilitySolutionId

现在我的问题是:给定 VulnerabilityAlertDocument 行的 ID,我必须获取所有相关的 VulnerabilitySolution 行

所以我找到了两种可能的解决方案:

1) 我在 VulnerabilityAlertDocument_VulnerabilitySolutionVulnerabilitySolution 表之间使用 JOIN,并选择使用 VulnerabilityAlertDocument 行 ID。

2)首先我执行如下查询:

select * VulnerabilityAlertDocument_VulnerabilitySolution where VulnerabilityAlertDocumentID = 3

然后,我获取每个获取行的 VulnerabilitySolutionId 的相关值,并对这些行执行查询

什么是更好的?我认为使用 JOIN 运算符的解决方案,但我不太确定

最佳答案

选择 1,使用内连接。检查此示例。内部联接可以轻松找到您的数据。

declare @a table (id int, name varchar(50))  
declare @b table (id int, name varchar(50))
declare @c table (ida int, idb int)

insert into @a values(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e')

insert into @b values(1,'x'),(2,'y'),(3,'z')

insert into @c values(1,1),(1,2),(2,1),(2,3),(3,1),(3,2),(3,3)

declare @value int = 1

select
a.name, b.name
from
@c c
inner join @a a on c.ida = a.id
inner join @b b on c.ida = b.id
where c.ida = 1 -- here you just comment and check the logic

关于mysql - 从 3 个绑定(bind)在一起的表中选择什么是最佳解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com