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#
为什么这个查询会返回带有重复记录的记录集的任何线索?结果如下:
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
如果你们需要更多信息,请告诉我,非常感谢。
答案 0 :(得分:4)
您正在从表support_system
中选择记录,但尚未指定连接条件。这个表和你正在审问的其他人之间有什么关系?
你可能想要这样的东西
SELECT *
FROM support_systems
INNER JOIN tickets ON
support_systems.support_system_id = tickets.support_system_id
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#
答案 1 :(得分:2)
问题在于这一行:
FROM support_systems,门票
我会从FROM子句中删除票证并使其成为内部连接子句。现在你有了所谓的“跨产品”:http://en.wikipedia.org/wiki/Cross_product
答案 2 :(得分:1)
我不得不说,这可能是因为你有一个明确的连接和一个非明确的连接,这个连接在生产笛卡尔的地方没有处理......
你有三张桌子......但只有两个表在连接中使用...你需要第二个连接...你需要在你的连接中包含support_systems。
可能喜欢
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
然后你的位置将是相同的...它将根据正确连接的表返回。