LoginSignup
1
1

More than 5 years have passed since last update.

3 つ以上のテーブルの結合についてのメモ

Posted at

image.png

こんなSQLテーマ

みなさん、こんなSQLの仕様書が来た時にどういうSQL組んでますか?
別に上から目線なわけじゃなくて僕が普段デザイナ使ってばっかりだったので手打ち環境(Oracle)になって
よくわかんなくなってたって言うだけの話
(Yahoo知恵袋に書けよって言われるような気もしてくるけどあくまで自分が疑問に思ったことを展開しておけばひょっとするとほかの人の役にも立つかもしれないねという意味でのメモ)←言い訳めいている

最初はこう書いた

SQLメモ
SELECT A.HINBAN FROM ZAIKO AS A
    INNER JOIN HINBAN AS HIN ON A.HINBAN = HIN.HINBAN
    INNER JOIN HINBANLOC AS HINLOC ON A.HINBAN = HINLOC.HINBAN
    INNER JOIN M_LOCATION AS LOC ON HINLOC.LOC_CD = LOC.LOC_CD

気になるところはここ

在庫テーブルとロケーションマスタに対する JOIN なのに、ON のところで品番ロケテーブルとロケーションマスタの、イコール条件を書いてしまっている。ちぐはぐだよね。

SQLメモ
SELECT A.HINBAN FROM ZAIKO AS A
    INNER JOIN M_LOCATION AS LOC ON HINLOC.LOC_CD = LOC.LOC_CD

最終的には

こう書いたんだけど、まだ業務データが読めてないのもあって試行錯誤してた。
あってる、、、よね?(笑)
検索しても意外に出てこないのよね~こういうの
タイトル名は僕が検索したキーワードで書いた

SQLメモ
SELECT A.HINBAN, LOC.LOC_CD FROM ZAIKO AS A
    INNER JOIN HINBAN AS HIN ON A.HINBAN = HIN.HINBAN
    INNER JOIN (
        SELECT HINLOC.HINBAN FROM HINBANLOC AS HINLOC 
        INNER JOIN M_LOCATION AS LOC ON HINLOC.LOC_CD = LOC.LOC_CD
    ) AS LOC
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1