3つのテーブルを結合させたSQL文について作成方法を教えてください。
よろしくお願いいたします。
【テーブル構成】
テーブル名---項目名/項目名・・・です。
tblA---id/del_flg/name
tblB---id/del_flg/add
tblC---id/del_flg/family
各テーブルはidによりリンクされます。
tblAのdel_flgは在籍者=0 退職者=1で、一人1レコードです。
tblBでは住所管理をしています。
旧情報を残したいので、更新時には新たにdel_flg=0でレコードを作成し、既存レコードはdel_flg=1に更新します。
tblCは、既婚者のみ作成されるレコードです。
つまり、tblBとtblCは、レコードが存在しない、あるいはdel_flg=0のみ、del_flg=0とdel_flg=1が混在 のどれかのパターンになります。
【やりたいこと】
いま、これらすべてのテーブルを全部つなげて、在籍している人の情報だけ集めたいのです。
tblAからはdel_flg=0のレコードをすべて取得したうえで、tblBとtblCにdel_flg=0のレコードがあればその情報も取得したい。
【経過】
select *
from
(tblA inner join tblB on tblA.id = tblB.id )
inner join tblC on tblA.id = tblC.id
とりあえずwhere条件をつけなくても、tblCに存在している人しか取得ができないのです。
where条件も含めて、上記条件のもと、希望するようなSQLの組み立て方をご教授ねがいたいのでよろしくお願いいたします。
できれば、早目の回答が希望です。
No.1ベストアンサー
- 回答日時:
仕様が微妙ですが、単純に考えればこんな感じ?
select *
from tblA
left join tblB on tblA.id = tblB.id and tblB.del_flg=0
left join tblC on tblA.id = tblC.id and tblC.del_flg=0
where tblA.del_flg=0
ただし、tblBは複数ある可能性があるため分けるのは妥当かもしれませんが
tblCはtblAの機能の一部の方がよいのでは?
すなわち未婚、既婚、以前既婚の状態は排他関係にあるので、複数にならず
既婚カラムで管理すればすっきりするので・・・
yambejp さま
tblB.del_flg=0 の条件をここにかけるとは! 驚きです。勉強不足でお恥ずかしいです。
思った結果になりました。
本当に助かりました。
もちろんベストアンサーです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
”photo id” とは何ぞや?
-
SQLサーバから、項目の属性(型...
-
マイクラPC版のコマンドで効率...
-
sqlで、600行あるテーブルを100...
-
SQLの検索について
-
ファミマTカード会員番号
-
阪急三番街 ATM(ゆうちょ)は...
-
Access パラメータクエリをcsv...
-
inner joinをすると数がおかし...
-
カンマ区切りの文字列を検索する
-
#1136 - Column count doesn't ...
-
tinyint(1) についての質問です。
-
LEFT JOIN とRIGHT JOINの合体...
-
フィールド名を変数で指定するには
-
SQL Left Join で重複を排除す...
-
Yahoo .comの idには年齢制限、...
-
上位3位を求めるSQL文は?
-
副問合せの書き方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
副問合せの書き方について
-
select文のwhere句に配列を入れ...
-
マイクラPC版のコマンドで効率...
-
SQLサーバから、項目の属性(型...
-
エラー 1068 (42000): 複数の主...
-
[MySQL] 3つのテーブルの結合で...
-
Access パラメータクエリをcsv...
-
SQLにて特定の文字を除いた検索...
-
SQL Left Join で重複を排除す...
-
ストアドのエラーについて
-
Unionした最後にGROUP BYを追加...
-
バインド変数について
-
PL/SQLの変数について
-
sqlで、600行あるテーブルを100...
-
WordpressのContact form 7でzi...
-
selectした大量データをinsert...
-
inner joinをすると数がおかし...
おすすめ情報