• ベストアンサー

2レコードずつ表示させたい。

VB2005、FlexGrid.NET環境です。 SQLを投げて、結果をグリッドに表示するプログラムを作っています。 ちょっとややこしいのですが…。 たとえば、 テーブルA   テーブルB ----------------------------------------- ごはん 朝 ----------------------------------------- 魚 朝 ----------------------------------------- 肉 夜 ----------------------------------------- テーブルAには、食べ物の一覧のデータが入っていて、 JOINするテーブルBにはそれを朝食べたのか夜食べたのか判定する フラグがあります。 これを、下記のようにしたいのですが テーブルA   テーブルB ----------------------------------------- ごはん 朝 ○ ごはん      夜 ----------------------------------------- 魚 朝 ○ 魚       夜 ----------------------------------------- 肉 朝 肉 夜 ○ ----------------------------------------- SQL的には、フラグのカラムが0なら朝、1なら夜、みたいに 表示しているのですが、キーが複数個あるので、朝と夜、肉を 食べたということもありえます。 なので、フラグに関わらず、朝と夜の2レコードを表示させて おきたいのですが、この動作を実現させる方法を教えていただけ ないでしょうか? ImportRowとか使えば出来そうな気がするんですが、うまくいかず 困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • NYOI
  • ベストアンサー率58% (56/96)
回答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

その他の回答 (1)

noname#140971
noname#140971
回答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に肉に関する情報がなければこのようになります。

関連するQ&A