gpt4 book ai didi

sql - 避免使用内部连接的笛卡尔积

转载 作者:行者123 更新时间:2023-12-04 15:47:42 25 4
gpt4 key购买 nike

我知道之前有人问过这个问题,但我很难理解。我很少使用原始 SQL。
我有三个表 - SessionGroupNameGroupSessionFeedback

我正在 idUser 上加入 SessionGroupFeedback我正在将 GroupName 加入 idGroup 列的 Session

这是我的 SQL 代码:

SELECT s.idSession, 
g.name,
s.Assistant,
s.idGroup,
s.start,
s.end,
f.value
FROM rempad.Session s
INNER JOIN rempad.GroupSessionFeedback f
ON s.idUser = f.idUser
INNER JOIN rempad.GroupName g
ON s.idGroup = g.idGroup
WHERE s.start BETWEEN '2013-04-28' AND '2013-05-28'
AND s.idUser = 22
OR s.idUser = 23
OR s.idUser = 24
OR s.idUser = 26
OR s.idUser = 27
OR s.idUser = 28
OR s.idUser = 42;

我希望它带回唯一的 idSessions 但由于连接,它会多次匹配它,我真的不知道该采取什么其他方法。我可以对数据库进行单独的调用 - 但我真的试图避免破坏数据库,因为它的响应速度非常慢。

有什么想法吗?

提前致谢

最佳答案

我在此页面上使用了示例:SQL query returning cartesian product弄明白。公平地说,我没有在我的问题中提供数据库结构。但问题是,在我加入的每个表中,都有不止一个匹配的列,因此我需要在我的加入语句中反射(reflect)这一点。这是一个示例

 INNER JOIN rempad.GroupSessionFeedback f
ON s.idUser = f.idUser
AND s.idSession = f.idSession
AND s.idGroup = f.idGroup

我希望这对其他人有帮助。大号

关于sql - 避免使用内部连接的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551131/

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