- 締切済み
異なるテーブル間の和
テーブルAの属性item1とテーブルBのitem1の和を求めるにはSQLでどのように記述すれば良いのでしょうか?? tableA ------ id item1 item2 pointer tableB ------ id item1 item2 pointer という2つのテーブルで,tableBのpointerはtableAのidを指しています.
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- piroin654
- ベストアンサー率75% (692/917)
追加の説明です。"tableBのpointerはtableAのidを指しています"の 私の解釈について説明をしておきます。 tblBのpointerフィールドに足し算の相手となるtableAのidが入力され ているというように解釈しています。tableBのpointerフィールドには ランダムにtableAのidが入力されている、ということです。では。
- piroin654
- ベストアンサー率75% (692/917)
失礼しました。SQL文を間違えて張りました。訂正は以下の通りです。 最初のSQL文 SELECT tbbleA.item1, tbbleB.item1, [tbbleA]![item1]+[tbbleB]![item1] AS 和 FROM tbbleA LEFT JOIN tbbleB ON tbbleA.id = tbbleB.pointer; 二番目のSQL文 SELECT tbbleA.item1, tbbleB.item1, NZ([tbbleA]![item1])+NZ([tbbleB]![item1]) AS 和 FROM tbbleB RIGHT JOIN tbbleA ON tbbleB.pointer = tbbleA.id; 説明は同じ順序で同じ内容です。では。
- piroin654
- ベストアンサー率75% (692/917)
気になっていたのですが、他のことでわすれていました。 随分日にちが経ったのでもう解決済みかもしれませんが、 回答しておきます。 "tableBのpointerはtableAのidを指しています."ということなので、 二つの場合にわけています。一つはtableAにもtableBにも足し算を する対象となるフィールドにすべて数値が入力されているものとする 場合。 SELECT tbbleA.item1, tbbleB.item1, [tbbleA]![item1]+[tbbleB]![item1] AS 和 FROM tbbleA INNER JOIN tbbleB ON tbbleA.id = tbbleB.pointer; もう一つはどちらかのフィールドに数値が入力されていないことを想定 した場合。 SELECT tbbleA.item1, tbbleB.item1, NZ([tbbleA]![item1])+NZ([tbbleB]![item1]) AS 和 FROM tbbleA INNER JOIN tbbleB ON tbbleA.id = tbbleB.pointer; 二番目の場合はNZ関数というものを使用しています。この関数の働きに ついてはネットで調べてください。以上です。では。
- deadout
- ベストアンサー率26% (22/83)
私の質問に書かれた補足を見る限り、SQLとDBMSをごっちゃに考え ておられる様です。 SQLは、データーベースに値を登録したり内容を検索したりするだけな ので、キーによる紐付けも出来ないテーブルの演算は出来ません。 まずは、SQLとDBMSの切り分けを考えて下さい。
- chukenkenkou
- ベストアンサー率43% (833/1926)
具体的なアドバイスが欲しいなら、具体的に情報提示してください。 (1)RDBMS名とバージョン (2)表の構成列とデータ型 (3)主キー (4)母体データ例 (5)得たい結果例 (6)自分なりに考えた結果 要件がよく分かりませんが、例えば下記のような感じ。 select A.item1+B.item1 from A inner join B on A.id=B.pointer [where 検索条件] group byが必要かとか、そういった話は提示内容からは判断できません。
- deadout
- ベストアンサー率26% (22/83)
んー、、、、単にjoinの話だと思うのですが、表結合にも種類が 有りますので、下を参考にして下さい。 http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html
補足
すみません.URL先は読んだのですが,まだ良く分かりません. tableAのitem1の値が10でtableBのitem1の値が20の時に結果が30となるようなクエリを書きたいのですが,joinでかけるのでしょうか?