親・子・孫のリレーションについて

このQ&Aのポイント
  • 親・子・孫のリレーションについてSQL文で会社に紐づく店と孫を表示させる方法は可能でしょうか。
  • 親・子・孫のリレーションを持つテーブルを作成しました。親と子の関係は1対n、子と孫の関係も1対nです。
  • 会社に紐づく店とその孫の情報を表示させたい場合、親と子のテーブルをJOINし、その結果を孫のテーブルとJOINすることで実現できます。
回答を見る
  • ベストアンサー

親・子・孫のリレーション

[親テーブル] (カラム)A* [子テーブル] (カラム)a* A(fk) [孫テーブル] (カラム)aaa* ymd 決済額 a(fk) [join] 親.A = 子.A 子.a = 孫.a 親・子は1対n 子・孫も1対n 1対n対n(?)という関係のテーブルを作成しました。 SQL文で会社に紐づく店を表示させ、且つ、孫も表示させて 下記のように表示させる事は可能でしょうか。 親   子  孫    A   a  aaa  ymd  決済額 →(カラム) 1   1  1 3月  2,000  →(値) 1   1  2 4月  1,000 1   1  3 5月  1,500 1  2  1 4月  1,500 2  1  1 3月  2,000 3  1  1 3月  1,000 3  2  1 4月  3,000

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

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

普通にJOINすればできますが、そもそも質問に書いてある結果はテーブル定義と矛盾しています。 子テーブルのaが複数のAに、孫テーブルのaaaが複数のaに紐づいていますし、aaaも主キーになっていません。 こういうデータを登録したいのであれば、子テーブル、孫テーブルは複合キーにしないといけないでしょう。

関連するQ&A

  • 親、子、孫のウインドウを同時に表示するのは?

    親と子のウンドウを同時に開くのは 親のファイルに以下のように書けば <HEAD> <SCRIPT LANGUAGE="JavaScript"> <!--// function openWindow() { window.open("","windowname"); } //--> </SCRIPT> </HEAD> <BODY> <A HREF="ko.html" onClick=openWindow() TARGET="windowname">子ウインドウ</A> </BODY> 出来るんですが、子のファイルに同じように書くと 子のウインドウが孫に変わってしまいます。 親、子、孫を同時に表示するのには、どうすればよいか、よろしくお願いします。

  • 【mysql】リレーションでパフォーマンスが落ちる

    mysqlで SELECT文を作成しています。  諸事情であるテーブルとテーブルを1対1の関係でプライマリーキー同士でつないでいます。 この時、Aというテーブル と Bというテーブルでつないでるとして Aテーブルにあるカラムのみを使ってでソートする場合パフォーマンスは問題なく Bテーブルにあるカラムのみでソートする場合もパフォーマンスに問題はありません。 しかし、Aテーブル Bテーブルのカラムを組み合せてソートすると パフォーマンスが極端に落ちてしまいます。 これを改善する方法はないでしょうか?

    • ベストアンサー
    • MySQL
  • 親→子→孫サブウィンドウのフォーカスの仕方

    すいません。教えてください。 1.親ページから子サブウィンドウを開いて、そのサブウィンドウは常に手前に表示したい。 2.さらに子サブウィンドウから孫サブウィンドウを開く。子ウィンドウは残したまま。 3.今度は孫ウィンドウが常に手前に表示される。 ということをやりたいのです。 実際にfocusでやってみると、子と孫ウィンドウが競合をおこして、どちらも前に出ようと交互に上に出てフラッシュ状態となってしまいます。 どなたか解決策はありませんでしょうか?

  • SQL 同テーブル、同フィールドの文字列連結

    以下の様にSQLで実現したいと思っております。 なお、DBはOracle10Gを利用しております。 親と子テーブルがあり以下の構成となっております。 ■親テーブル  ID,カラムA  1 ,AA  2 ,BB  3 ,CC ■子テーブル  ID,枝番,カラムB  1 ,1 ,あああ  1 ,2 ,いいい  2 ,1 ,ううう  2 ,2 ,えええ  2 ,3 ,おおお  3 ,2 ,かかか ※IDカラムは親テーブルと子テーブルは1:1です  子テーブルの枝番カラムはIDに対してN件です。 やりたい事としては、上記の2テーブルより、以下の結果を出力したいです。  ID,カラムA,カラムB  1 ,AA ,あああ いいい  2 ,BB ,ううう えええ おおお  3 ,CC ,かかか 親テーブルを元にして、 親テーブルに紐づく子テーブルのカラムBを連結して出力 するSQLをご教授いただけますでしょうか

  • SQL文について

    TBL_A カラム1 |カラム2 |カラム3 |カラム4 | ---------|---------|---------|---------| 1    |AAA   |N    |1    | ---------|---------|---------|---------| 2    |AAA   |G    |1    | ---------|---------|---------|---------| 3    |BBB   |N    |0    | ---------|---------|---------|---------| 4    |CCC   |N    |0    | ---------|---------|---------|---------| TBL_B カラム1 |カラム2 | ---------|---------| AAA   |2    | ---------|---------| BBB   |0    | ---------|---------| CCC   |1    | ---------|---------| 上記のテーブル、TBL_A、TBL_Bがあるとします。 TBL_Aからカラム3='N'を抽出し、TBL_Bのカラム2でソートしたいのですが、 可能でしょうか? 結果 ---------|---------| BBB   |0    | ---------|---------| CCC   |1    | ---------|---------| AAA   |2    | ---------|---------| …となって欲しいのですが。。。 select TBL_A.カラム2 from TBL_A, TBL_B where TBL_A.カラム3='N' order by TBL_B.カラム2 では、うまくいきませんでした。 ※ TBL_A、TBL_Bは共にカラム1がキー値です。

  • 子会社、孫会社について

    子会社、孫会社の定義がよくわかりません。 株取得率が51%以上持っている会社が親会社になるのでしょうか?孫会社はどうなんでしょう? また、株取得率が51%もっていなくても子会社と言えるのでしょうか? 例えば49%もっている場合は子会社にならずに関係会社になるのでしょうか? また、昔にA社から出資されて会社をつくられたが、株式を51%持っていない場合は子会社にならないのでしょうか?

  • 子画面から孫画面をポップアップ表示する際に、子画面と同じ画面が表示される

    親画面から子画面をポップアップ表示し、さらに孫画面をポップアップ表示させています。 親画面→子画面→孫画面という順序で表示させる場合は問題ないのですが、 親画面→子画面→子画面を塗り替えで遷移→子画面に戻る→孫画面表示 という順序で孫画面をポップアップ表示させると、孫画面に子画面と同じ画面が出てきてしまいます。 (子画面を遷移させるときに何かが失われている?) 以上のような状態で何か失われているものがあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • 異なるキーで取得したデータの合成

    SQLに関して質問です。 以下のようなテーブルA、Bがあった場合、 【テーブルA】  カラム1  カラム2  ------------------------  AAA   CCC  BBB   DDD 【テーブルB】  カラム3  カラム4  ------------------------  AAA   1  BBB   2  CCC   3  DDD   4 次のような結果を得るにはどのようなSQL文を記述すれば良いでしょうか? 【求める結果】  カラム1  カラム2 カラム4(1) カラム4(2)  ---------------------------------------------------  AAA   CCC    1      3  BBB   DDD    2      4 非常に初歩的な質問かもしれませんが宜しくお願いいたします。

  • Access2003 リレーションされたサブフォームの抽出

    Access顧客情報のデータベースを正規化(VBA)している初心者です。リレーションされているテーブルを元にクエリ(3つのテーブルをつなげただけ)を作成しメインフォームにサブフォームを作りました。3つのテーブルは、1対多でリレーションされています。テーブルAのGR_IDやグループ名で検索しそれに紐づいているCOmpanyは抽出できるのですが、サブフォームのテーブルBのCOmpany nameから抽出することができません。メインフォームからオプションボタンを使用してメインとサブの両方のテーブルを検索したいので、子・親リンクの設定をはずせませんよね?以前の類似質問で「サブフォームのフィルターに入力し、フィルター実行でうまくいきました」とありましたが、具体的にどのように設定(マクロやVBA、再クエリ?)すればいいのかわからず悩んでいます。どうぞ初心者向きのアドバイスをよろしくお願いいたします。 テーブルA GR_ID グループ名 ※テーブルA(1):テーブルB(多) テーブルB GR_ID Company_ID Company name ※テーブルB(1):テーブルC(多) テーブルC Company_ID salesman

  • 子Windowの操作(親Window遷移後)

    親画面Aから、子画面B(window.open("./test2.html","aaa","width=500,height=300,resizable=yes");)を開き、親画面Aが別画面Cに遷移した状態で、画面Cから子画面Bの操作はできるのでしょうか?