SQL初心者です。
教えてください。
A表とB表があります。
A表の伝票Noの列の値とB表の伝票Noの列の値はイコールです。
判定はB表のある別のカラム(sample)と変数Zに格納されている値がイコールという
条件で合致するA表のデータを抽出したいです。
LEFT JOINもしくはINNER JOINなどを使って書けば良いのでしょうか?
例えば
SELECT * from A表 INNERJOIN B表 on A表.伝票No = B表.伝票No
where B表.sample = 変数Z
などと書けば良いのでしょうか?
No.1ベストアンサー
- 回答日時:
こんにちは。
LEFT OUTER JOIN と INNER JOIN は少し差があります。
下記のSQLを実行して確認してみてください。
CREATE TABLE #TempTableA
(
Idx int
, DataA varchar(10)
)
CREATE TABLE #TempTableB
(
Idx int
, DataB varchar(10)
)
INSERT INTO #TempTableA
SELECT 1, 'A' UNION ALL
SELECT 2, 'B' UNION ALL
SELECT 3, 'C' UNION ALL
SELECT 4, 'D'
INSERT INTO #TempTableB
SELECT 1, 'Z' UNION ALL
SELECT 2, 'Y' UNION ALL
SELECT 4, 'X' UNION ALL
SELECT 5, 'V'
上記のSQLを利用してテーブル作成とデータを登録します。
その後、LEFT OUTER JOIN でIdx値が3のデータを抽出してみます。
SELECT A.Idx, A.DataA, B.DataB
FROM #TempTableA A LEFT OUTER JOIN #TempTableB B
ON A.Idx = B.Idx
WHERE A.Idx = 3
結果は下記のとおりです。
1件のデータが出ます。
ですが、#TempTableBテーブルにはIdxが3のデータがないのでnullのデータで表示されます。
IdxDataADataB
3CNULL
今回は、INNER JOINで実行してみます。
INNER JOINは両方のテーブルにデータが存在しないとデータが表示されません。
SELECT A.Idx, A.DataA, B.DataB
FROM #TempTableA A INNER JOIN #TempTableB B
ON A.Idx = B.Idx
WHERE A.Idx = 3
ですので、1件も表示されません。
LEFT OUTER JOIN と INNER JOINはこの差がありますので、
注意して適当なSQLを利用する必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
テーブルで一番古いレコードだ...
-
マテリアライズドビューとスナ...
-
このISAMでは、リンクテーブル・・
-
Accessのテーブルデータを一気...
-
mysqlへの書き込みがリロードす...
-
Access昇順レコードを、5分割...
-
アクセス レコードセットを更...
-
access2000 オートナンバーで...
-
ビューのソートについて
-
クエリとパススルークエリを作...
-
構文エラー : 演算子がありませ...
-
同テーブルの差分レコードの抽出
-
ACCESSで容量が50MBになった...
-
Oracleで上書きImportはできま...
-
ORA-01401が表示され、データが...
-
結合テーブルでINSERTする方法...
-
住所のDBテーブル、マスターの...
-
IF NOT EXISTを使用するINSERT文
-
重複クエリを使ったデータ削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
ビューのソートについて
-
マテリアライズドビューとスナ...
-
処理の途中で停止させ、再開さ...
-
MS Accessを共有した際にファイ...
-
構文エラー : 演算子がありませ...
-
ORA-01401が表示され、データが...
-
accessでレコード更新直後の反...
-
重複クエリを使ったデータ削除
-
Accessでの稼働日数計算の方法
-
住所のDBテーブル、マスターの...
-
同一テーブルのデータを参照し...
-
ERROR1062:Duplicate entry.......
-
ACCESSで容量が50MBになった...
-
複数のテーブルを参照するselec...
おすすめ情報