inner joinがあっても美しくSQL
青い雷
青い雷
ATOMRSS
  • コード求むID: 44
  • 登録日時:  2007/08/06 16:20
  • 最終更新日時: 2007/11/21 21:48
  • アクセス数: 4873
  • タグ:  sql 美しさ
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

SQLを適切に改行しても、
From句に「inner join」があると、SQL文が見づらくなってしまいます。
私はいつも以下のように改行していますが、
「もっと見やすい」もしくは「定石はこれ」といったような書き方があればご教授下さい。

select 大分類名, 小分類名, 商品名
 from (大分類マスタ
  inner join 小分類マスタ on 大分類マスタ.大分類ID 小分類マスタ=大分類ID)
  inner join 商品マスタ on 小分類マスタ.小分類ID 商品マスタ.小分類ID
 where 商品名 like '%えんぴつ'
 order by 1, 2


コメント

はなんのためのカッコですか?

  • GoodJob
  • 0

  • shin1
  • 2:shin1
  • 2007/08/06 21:00

私もまったく同じ書き方をします。
selectとかのステートメントは先頭だけ大文字にするなぁ。。。
いつの間にそんな癖がついたかはわかりませんが。

  • GoodJob
  • 0

定石は自分も知らない為、自己流ではありますがこんな感じに書いています。
基本はCSEの整形(Ctrl+Q)でJOIN句の周辺だけを手で修正する形ですね。

SELECT
    大分類名,
    小分類名,
    商品名
FROM
    大分類マスタ
        INNER JOIN 小分類マスタ ON
            大分類マスタ.大分類ID 小分類マスタ=大分類ID AND
            大分類マスタ.削除フラグ '1'
        INNER JOIN 商品マスタ ON
            小分類マスタ.小分類ID 商品マスタ.小分類ID
WHERE
    商品名 LIKE '%えんぴつ'
ORDER BY
    1,
    2

  • GoodJob
  • 0

  • shin1
  • 5:shin1
  • 2007/08/07 02:07

カンマやAndなどは、行末じゃなくて先頭に書いた方が便利でないですか?
項目や条件の追加削除の時に一行の修正で済みますし。

  • GoodJob
  • 0

皆様、たくさんのご意見ありがとうございました。

arthor様のおっしゃるように、()は不要ですね。
確か昔、MS-Accessでクエリを作成すると、勝手に付けられていたので、その頃の習慣が残っていました。

sheile様のSQLは見やすいです。こちらに乗り換えようと思いました(笑)
ただ、shin1様ご指摘のように、カンマやandは先頭がいいですね。

  • GoodJob
  • 0

  • ゲスト
  • 7:ゲスト
  • 2007/11/21 21:48

今更ですが…。私は以下のように書いてます。

SELECT 大分類名
     小分類名
     商品名
  FROM 大分類マスタ             AS A
 INNER JOIN 小分類マスタ        AS B
    ON A.大分類ID B.大分類ID
   AND A.削除フラグ '1' 
 INNER JOIN 商品マスタ          AS C
    ON B.小分類ID C.小分類ID
 WHERE C.商品名 LIKE '%えんぴつ'
 ORDER BY 1, 2;

  • GoodJob
  • 0

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

関連ソースコード・ノウハウを登録

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

ブックマークコメント