当数据库中没有重复记录时,为什么此SQL查询返回重复记录?

当数据库中没有重复记录时,为什么此SQL查询返回重复记录?,sql,mysql,Sql,Mysql,有没有线索说明为什么这个查询会返回一个包含重复记录的记录集?结果如下所示: SELECT * FROM support_systems,tickets INNER JOIN user_access ON tickets.support_system_id = user_access.support_system_id WHERE support_systems.account_id = #session.account_id# AND user_access.user_access_level

有没有线索说明为什么这个查询会返回一个包含重复记录的记录集?结果如下所示:

SELECT *
FROM support_systems,tickets
INNER JOIN user_access ON tickets.support_system_id = user_access.support_system_id
WHERE support_systems.account_id = #session.account_id# 
AND user_access.user_access_level >= 1 
AND user_access.user_id = #session.user_id# 

如果你们需要更多信息,请告诉我,非常感谢。

问题在于这行:

来自支持系统、票证


我将从from子句中删除票据,并使其成为一个内部join子句。现在你有了所谓的交叉积:

问题是这一行:

来自支持系统、票证


我将从from子句中删除票据,并使其成为一个内部join子句。现在你有一个所谓的叉积:

我不得不说,这可能是因为你有一个显式连接和一个非显式连接,它没有在产生笛卡尔函数的地方处理

你有三张桌子

但是联接中只使用了两个表。。。你需要第二次加入。。。你需要在你的加入中加入支持系统

可能喜欢

Priority    ID      Subject         Status
high        1       First Subject   open
high        1       First Subject   open
low         3       Weeee           open
low         3       Weeee           open
medium      4       hhhhh           closed
medium      4       hhhhh           closed
medium      5       neat            open
medium      5       neat            open

那么你的位置会是一样的。。。它将基于正确连接的表返回。

我不得不说,这可能是因为您有一个显式连接和一个非显式连接,它们没有在生成笛卡尔函数的where中处理

你有三张桌子

但是联接中只使用了两个表。。。你需要第二次加入。。。你需要在你的加入中加入支持系统

可能喜欢

Priority    ID      Subject         Status
high        1       First Subject   open
high        1       First Subject   open
low         3       Weeee           open
low         3       Weeee           open
medium      4       hhhhh           closed
medium      4       hhhhh           closed
medium      5       neat            open
medium      5       neat            open

那么你的位置会是一样的。。。它将根据正确连接的表返回。

您正在从表支持系统中选择记录,但尚未指定连接条件。这张桌子和你询问的其他桌子之间的关系是什么

你可能想要这样的东西

from support_systems a left join user_access b on a.support_systems_id = b.support_systems_id
left join ticket c on c.support_systems_id = b.support_systems_id

您正在从表support_系统中选择记录,但尚未指定联接条件。这张桌子和你询问的其他桌子之间的关系是什么

你可能想要这样的东西

from support_systems a left join user_access b on a.support_systems_id = b.support_systems_id
left join ticket c on c.support_systems_id = b.support_systems_id

support_systems表有一个id列support_system_id,它是tickets表中的FK。tickets表有一个id列ticket\u id,它是用户访问表中的FK。user\u access表还有另一个FK,即user\u id列。多谢了,伙计,这就完成了这个任务。我会多考一次,试着从中学习!在这种情况下,我认为您可能希望加入ticket_id,但在编写SQL时,也必须尝试手头有一个数据库图。确保无论何时在FROM子句中包含指定正确联接的新表,如果support\u systems表的id columnsupport\u system\u id在tickets表中是FK,则这当然可能涉及多个联接条件。tickets表有一个id列ticket\u id,它是用户访问表中的FK。user\u access表还有另一个FK,即user\u id列。多谢了,伙计,这就完成了这个任务。我会多考一次,试着从中学习!在这种情况下,我认为您可能希望加入ticket_id,但在编写SQL时,也必须尝试手头有一个数据库图。确保无论何时在FROM子句中包含一个新表并指定了正确的联接,在以下情况下,这当然可能涉及多个联接条件: