2

結合が使用されていない場合、このクエリがどのように記述されるかを知りたいです。結合が実行できない、または使用できない (利用できない) 場合に備えて、私はそれを理解しようとしています。

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

結合を使用できない理由は、アプリケーションが標準 SQL ではなく HQL を使用し、HQL では結合が非常に困難になるためです。

4

8 に答える 8

1

結合が制限されていない場合は、SQL データベースに近づかないでください。

于 2009-04-15T18:00:55.937 に答える
0

Hibernate マップ ファイルに関連付けマッピングがある場合、Hibernate は結合を妨げません。たとえば、http ://www.jumpingbean.co.za/blogs/mark/hibernate_hql_inner_join_on_clause を参照してください。

于 2009-04-15T18:23:38.313 に答える
0

多くの場合、1 つの値のみを選択する場合、サブクエリは結合よりも簡単です。

SELECT e.Name, e.HireDate, (select SUM(CheckAmount) from EmployeeCheck where EmployeeID = e.ID) 
FROM Employee e
于 2009-04-15T17:01:50.930 に答える
0

純粋主義者ではありませんが、リレーショナル データベースとデータの正規化の中心的な概念は結合です。これなしでリレーショナル データベースを使用してデータを保存する理由はほとんどありません。インデックスは、これを迅速かつ効率的に実現します。

古い方法では、マスターとトランザクション テーブルを使用していました。暗黒時代に逆戻り。

ただし、カーソルを使用して、結合が行うフィルタリングを行うことができます。カーソルは、結合ベースのフィルターを実行するのではなく、テーブルに対する配列のように機能し、同じ結果が得られます。

于 2009-04-15T17:02:26.513 に答える
0

必要に応じて、相関サブクエリを使用して実行できますが、結合の方が優れています。

于 2009-04-15T17:03:04.217 に答える
-2

結合のない SQL...

SELECT * FROM table1
SELECT * FROM table2
SELECT * FROM table3

しかし、それはあなたを助けるつもりはありません。

問題は、希望する出力とは何か、結合を望まない理由は何か、ということです。

リレーショナル データベースの複数のテーブルからのデータが必要な場合は、データを結合します。ジェームズ・ブラックが提案したように、これはおそらくアプリケーションで行う必要があることです。

状況にもう少し光を当てることができれば、さらに支援できるかもしれません.

于 2009-04-15T17:00:13.133 に答える