- PR -

SQLServer2005でのleft join

1
投稿者投稿内容
ぱちぱち
常連さん
会議室デビュー日: 2007/03/05
投稿数: 31
投稿日時: 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
よろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-07-04 18:25
NativeSQLの質問ですか?HQLの質問ですか?
tkrn
ベテラン
会議室デビュー日: 2005/10/25
投稿数: 61
投稿日時: 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 ]
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2007-07-04 22:01
saki1208です。

ご自分で Left Join というキーワードを提示されているのですから、
SQLServerのSQLリファレンス見ればいいのに...
よっしー
大ベテラン
会議室デビュー日: 2007/05/17
投稿数: 143
投稿日時: 2007-07-04 23:10
たしか、(+)の替わりに(*)を使えばできたような気がするけど、
LEFT JOINした方が見やすいです。
saki1208
ベテラン
会議室デビュー日: 2006/08/22
投稿数: 86
投稿日時: 2007-07-04 23:34
saki1208です。

よっしーさんの仰っている通り、Join句 を使用した方が結合条件と抽出条件が
はっきりと区別でき、見易くなります。
ぱちぱち
常連さん
会議室デビュー日: 2007/03/05
投稿数: 31
投稿日時: 2007-07-13 20:38
ありがとうございます。
返信が送れて申し訳ありません。

あれから色々試しまして、成功しました、
hqlと深く考えすぎていました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)