VB2005、FlexGrid.NET環境です。
SQLを投げて、結果をグリッドに表示するプログラムを作っています。
ちょっとややこしいのですが…。
たとえば、
テーブルA テーブルB
-----------------------------------------
ごはん朝
-----------------------------------------
魚朝
-----------------------------------------
肉夜
-----------------------------------------
テーブルAには、食べ物の一覧のデータが入っていて、
JOINするテーブルBにはそれを朝食べたのか夜食べたのか判定する
フラグがあります。
これを、下記のようにしたいのですが
テーブルA テーブルB
-----------------------------------------
ごはん朝 ○
ごはん 夜
-----------------------------------------
魚 朝 ○
魚 夜
-----------------------------------------
肉朝
肉夜 ○
-----------------------------------------
SQL的には、フラグのカラムが0なら朝、1なら夜、みたいに
表示しているのですが、キーが複数個あるので、朝と夜、肉を
食べたということもありえます。
なので、フラグに関わらず、朝と夜の2レコードを表示させて
おきたいのですが、この動作を実現させる方法を教えていただけ
ないでしょうか?
ImportRowとか使えば出来そうな気がするんですが、うまくいかず
困っています。
No.2
- 回答日時:
SQL文に関する質問だとすれば・・・。
A:
ID__品名
1___ごはん
2___魚
3___肉
B:
ID__A_ID___判定子
1________1__________0
2________2__________0
3________3__________1
クエリ:
品名_____時間___判定子丸表示
ごはん___朝______O
ごはん___夜________
魚_________朝______O
魚_________夜________
肉_________朝________
肉_________夜______O
SELECT A.品名, "朝" AS 時間, "O" AS 判定子丸表示 FROM A RIGHT JOIN B ON A.ID=B.A_ID WHERE (((B.判定子)=0))
UNION
SELECT A.品名, "朝" AS 時間, "" AS 判定子丸表示 FROM A RIGHT JOIN B ON A.ID=B.A_ID WHERE (((B.判定子)=1))
UNION
SELECT A.品名, "夜" AS 時間, "" AS 判定子丸表示 FROM A RIGHT JOIN B ON A.ID=B.A_ID WHERE (((B.判定子)=0))
UNION
SELECT A.品名, "夜" AS 時間, "O" AS 判定子丸表示 FROM A RIGHT JOIN B ON A.ID=B.A_ID WHERE (((B.判定子)=1));
B:
ID__A_ID___判定子
1________1__________0
2________2__________0
クエリ:
品名_____時間___判定子丸表示
ごはん___朝______O
ごはん___夜________
魚_________朝______O
魚_________夜________
仮にBに肉に関する情報がなければこのようになります。
No.1ベストアンサー
- 回答日時:
VB側で処理するより、SQL側で処理した方が早いかな?
・テーブルAとテーブルBをLEFT JOINでつなぐ。
・朝食べたものだけを抽出するクエリと夜食べたものだけを抽出するクエリをUNIONする。
て感じで。こうすれば各食べ物で2行ずつ出るはずです。
SELECT テーブルA.* ,
テーブルB.フラグ ,
'1' AS SORTFLG
FROM テーブルA
LEFT JOIN テーブルB ON テーブルA.食べ物 = テーブルB.食べ物
WHERE テーブルB.フラグ = 朝
UNION
SELECT テーブルA.* ,
テーブルB.フラグ ,
'2' AS SORTFLG
FROM テーブルA
LEFT JOIN テーブルB ON テーブルA.食べ物 = テーブルB.食べ物
WHERE テーブルB.フラグ = 夜
ORDER BY テーブルA.食べ物,SORTFLG
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ダイエット・食事制限 毎日60回くらい腹筋してたらお腹痩せますか? 食事は朝ごはんはパンと豆乳。昼ごはんはご飯一杯と肉や魚 8 2022/11/19 18:48
- ダイエット・食事制限 米を我慢したのにアイスを食べていました。意味ないですよね・・・ 3 2022/10/11 20:35
- 風邪・熱 コロナなのか? 検査してこいってのはわかってます。質問というかほぼ独り言みたいな感じですが、回答して 3 2023/03/20 23:56
- ダイエット・食事制限 夜になると過食してしまいます、、 3 2023/07/02 19:48
- 食生活・栄養管理 朝食にバナナとフルーツグラノーラはNG? 5 2023/04/16 00:35
- インテリアコーディネーター ダイニングテーブルについて。朝起きた時や夜ゆっくり過ごす場所として、テーブルが欲しいです。 今はこた 1 2023/05/02 20:30
- MySQL 【MySQL】本当に困っています。詳しい方、ご教授よろしくお願いします。 1 2023/06/03 14:18
- その他(家事・生活情報) パパとママの家事分担について、割合は? ●部屋掃除 ●子供のお風呂 ●料理朝 ●料理夜 ●お風呂掃除 4 2022/08/13 07:03
- 食生活・栄養管理 痩せるにはどうしたら… ここ数年ずーっと 白米、夜に食べれないです、食べてないです 肉卵のおかずと豆 6 2022/09/04 19:51
- ダイエット・食事制限 ダイエットの食事です食べ過ぎですか 朝 食パン(ジャムをティースプーン1杯分塗ってます) カップスー 4 2022/08/17 20:02
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WORD VBA プログラム修正をお願...
-
AccessからExcelへエクスポート...
-
ExcelVBAについて
-
VBとアクセスでSQL文に変...
-
VB.NET データセットとADOレコ...
-
『列名 '担当者CD' があいま...
-
ACCESS クエリで 昇(または降...
-
VBでコンボボックスとテキスト...
-
CSVファイルのエクスポートでソ...
-
html javascriptにてWeb SQLを...
-
DataGridViewに複数テーブルの...
-
VBAで OLEオブジェクト型のフ...
-
ExcelVBAからAccessMDB内のテー...
-
MDBテーブルへの追加変更を教え...
-
他のMDBのテーブルに追加したい
-
C# OleDbDataAdapter.Fillメソ...
-
.net 複数の主キーを設定する方法
-
Accessで宛名ラベルに同一宛先...
-
ADO&mdbで、リンクテーブルの...
-
ASP.NET GridView 一致した行の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WORD VBA プログラム修正をお願...
-
VBとアクセスでSQL文に変...
-
Accessで別mdbのテーブルをコピー
-
『列名 '担当者CD' があいま...
-
ExcelVBAからAccessMDB内のテー...
-
他のMDBのテーブルに追加したい
-
手動または分散トランザクショ...
-
SQLを発行とは?クエリの作成と...
-
DataGridViewに複数テーブルの...
-
CSVファイルのエクスポートでソ...
-
AccessからExcelへエクスポート...
-
エクセルのテーブルを解除する...
-
Excel複数シートをaccessへ一括...
-
HTMLのテーブルの行数が多くな...
-
COBOLのINVALID KEYが理解でき...
-
アクセステーブル、リンクとロ...
-
ACCESSのテーブル名をリストに...
-
ACCESS2010 実行時エラー 2766
-
DataGridの中身をDataSetにテー...
-
【ADO】「Execute」を使うと...
おすすめ情報