- - PR -
SQLServer2005でのleft join
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-04 17:50
こんにちは、SQLの質問にもなってしまいますが・・。
hibernateの質問です。 " from OTABLE o, TTABLE t, MTABLE m " + " where o.id.item1 = ? " + " and t.item2 = m.item2 " + " and t.item3 = o.item3 "; とあった場合、このSQL(これは正常に取得できました)にもう一つ テーブルDTABLEをLEFT JOIN したいのですが(上記SQLのOTABLEがLEFTに)。 Oracleでは " and (+)o.item4 = d.item4 ";のように簡易にできたと思うのですが、 SQLServerではどのように取得できるのでしょうか? また、hibernateを使っていることもありまして、取得一覧のEntityの配列が どのように入ってくるのかも不安ですが・・(多分DTABLEのEntityが無いだけ だと思うのですが・・)。 eclipse3.2 SQLServer2005 WinXP SP2 よろしくお願いします。 |
|
投稿日時: 2007-07-04 18:25
NativeSQLの質問ですか?HQLの質問ですか?
|
|
投稿日時: 2007-07-04 18:27
Oracleの
" from OTABLE o, TTABLE t, MTABLE m, DTABLE d " + " where o.id.item1 = ? " + " and t.item2 = m.item2 " + " and t.item3 = o.item3 " + " and (+)o.item4 = d.item4 "; をSQLServerで書くとと言う意味ですか? " from OTABLE o right join DTABLE d on o.item4 = d.item4, TTABLE t, MTABLE m " + " where o.id.item1 = ? " + " and t.item2 = m.item2 " + " and t.item3 = o.item3 "; でどうでしょうか? このまま利用しても元となる結合条件が怪しい気もしますが… [ メッセージ編集済み 編集者: tkrn 編集日時 2007-07-04 18:34 ] |
|
投稿日時: 2007-07-04 22:01
saki1208です。
ご自分で Left Join というキーワードを提示されているのですから、 SQLServerのSQLリファレンス見ればいいのに... |
|
投稿日時: 2007-07-04 23:10
たしか、(+)の替わりに(*)を使えばできたような気がするけど、
LEFT JOINした方が見やすいです。 |
|
投稿日時: 2007-07-04 23:34
saki1208です。
よっしーさんの仰っている通り、Join句 を使用した方が結合条件と抽出条件が はっきりと区別でき、見易くなります。 |
|
投稿日時: 2007-07-13 20:38
ありがとうございます。
返信が送れて申し訳ありません。 あれから色々試しまして、成功しました、 hqlと深く考えすぎていました。 ありがとうございました。 |
1