我想知道如果没有使用连接,将如何编写此查询。我一直试图弄清楚连接不可行或无法使用的情况(不可用)。
SELECT
*
FROM
(
table1
INNER JOIN
table2
ON
table1.id = table2.id
)
INNER JOIN
table3
ON
(
table1.id2 = table3.id2
)
AND
(
table1.id3 = table3.id3
)
WHERE
table1.id = 1
我无法使用连接的原因是因为应用程序使用HQL而不是标准SQL,而HQL使得连接难以实现。
答案 0 :(得分:12)
如果不以某种方式加入数据,就无法从两个不同的表中提取数据。您正在使用JOIN语句但是您可以通过将其放在where子句中来实现相同的功能,例如:
SELECT * FROM table1, table2 WHERE table1.id = table2.id AND ...
答案 1 :(得分:2)
您可以选择分隔并在应用程序中执行连接。
答案 2 :(得分:1)
如果联接不受限制,请远离SQL数据库。
答案 3 :(得分:0)
如果只选择1个值
,通常子查询可能比连接更容易SELECT e.Name, e.HireDate, (select SUM(CheckAmount) from EmployeeCheck where EmployeeID = e.ID)
FROM Employee e
答案 4 :(得分:0)
不是纯粹的,但关系数据库和数据规范化的核心概念是连接。几乎没有理由使用关系数据库来存储数据。索引可以快速有效地实现这一目标。
旧方法是使用主表和事务表。回到黑暗时代。
但是,您可以使用游标来执行连接所做的过滤。光标就像对着表的数组而不是基于连接的过滤器,并且会得到相同的结果。
答案 5 :(得分:0)
如果需要,可以使用相关子查询来完成,但连接更好。
答案 6 :(得分:0)
如果在hibernate映射文件中有关联映射,Hibernate不会阻止您进行连接。例如,请参阅:http://www.jumpingbean.co.za/blogs/mark/hibernate_hql_inner_join_on_clause
答案 7 :(得分:-2)
没有连接的SQL ...
SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3
但这对你没有帮助。
问题是,您想要的输出是什么,以及您不希望加入的原因是什么?
如果您想要关系数据库中多个表的数据,那么您将加入数据。也许正如James Black所说,这是你需要在应用程序中做的事情。
如果你能够进一步了解情况,我们可能会进一步提供帮助。