2つのテーブルの項目の和が求まりません
- テーブルAとテーブルBの項目の和を求める方法がわかりません。
- テーブルAとテーブルBを結合して期待する結果を得られませんでした。
- テーブルAとテーブルBの項目の和を求めるためのSQLが難しいです。オラクルのSQL入門書を探しているので、おすすめの本があれば教えてほしいです。
- ベストアンサー
2つのテーブルの項目の和が求まりません。
以下のA、Bを結合して期待する結果を得たいのですが、 4時間、試行錯誤してもできませんでした(><) 制約条件:サブクエリーの有無は問いません。 ■テーブルA a b ---- 1 2 2 1 ■テーブルB a b ---- 1 1 3 7 ■期待する結果 a cnt ---- 1 3 2 1 3 7 aはキーですがAのみ、Bのみ、両方に存在することがあるので、 簡単そうでかなり難しいようです。。 うぅ。。オラクルのSQL入門をなくしてしまったのが痛いです。 難しいSQLがさっと書けるようになるお勧めなSQL本ありましたら 教えてほしいです。よろしくお願いします。
- php4
- お礼率42% (373/888)
- MySQL
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
あまり難しく考えないほうがよろしいですよ。 AとBを一つの表とまず考えてからa単位でbを集計をする、という考え方なのですからその通りSQLを書けばいいと思います。 従って以下のとおりになります。 select a,sum(b) from (select a, b from テーブルA union all select a,b from テーブルB ) group by a; union all でまずAとBを一つの表にしてしまいます。 あとはgroup by a でa単位としてbをsum関数で集計します。 ちなみに私は、SQLの本は持っていません。webで十分だと思います。 sampleはweb上に腐るほどあります。
関連するQ&A
- Oracle10gで1つのSQLで複数回同じテーブルを結合する場合のパ
Oracle10gで1つのSQLで複数回同じテーブルを結合する場合のパフォーマンス向上 Oracleで1つのSQL内で同じテーブルを2回以上結合すると結果出力にかかる時間が非常に遅くなります。 例: SELECT * FROM A, B b1, B b2 WHERE a.id = b1.id AND a.id = b2.id (テーブルBを2回結合している) こういう場合にパフォーマンスを落とさない方法はありますか?テンポラリテーブルでテーブルBのレプリカを作成して使用するというのはなしです。あくまで1つのSQLで結果出力できることを前提にパフォーマンスを向上する方法を教えてください。
- ベストアンサー
- Oracle
- サブクエリーなしで実現できますか?
以下のA、Bを結合して期待する結果を得たいです。 条件 ・MySQL4なのでサブクエリーは使えません。 ・テーブルの型が異なるので、UNIONは使えません。 ・両テーブルともa b の2カラムでプライマリキーになります。 ■テーブルA a b ---- 1 2 1 4 ■テーブルB a b c d -------- 1 3 c d 1 4 c d ■結果 1 2 1 3 1 4
- ベストアンサー
- MySQL
- サブクエリなしで2つのテーブルを集計する方法
テーブルA id|cnt|name 1 2 田中さん 2 5 鈴木さん テーブルB id|cnt|name 1 4 田中さん 2 4 鈴木さん サブクエリを使用せず、上記2つのテーブルを集計し、 下記のように出力できるSQLはありますでしょうか? ■期待する総合ランキング結果 id|cnt|name 2 9 鈴木さん 1 4 田中さん P.S まだまだ、安価なレンタルサーバはMySQLは4.0が多く苦労します・・
- ベストアンサー
- MySQL
- オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
サブクエリーで複数キーを指定したいです。例えば以下のようなSQLですが、 SQL> > select * from テーブルA > where (key1,key2) in (select key1,key2 from テーブルB) このSQLはオラクルでは実行できますが、SQLSERVERでは文法エラーになってしまいます。SQL SERVER ではサブクエリーで複数キーを指定するのは不可能なのでしょうか?
- ベストアンサー
- SQL Server
- 複数テーブルを合わせて総合ランキングを作りたいです
以下の2つの相性テーブル(table_a,table_b)でサブクエリーを使わず期待する結果(ランキング)を得るSQLはあるでしょうか? 又、両方とも1万件になった場合結構重いでしょうか?うーん、1つのテーブルにした方が良いですか。。 ■table_a user match_user point test1 test2 2 test1 test3 2 ■table_b user_id match_user_id point test1 test2 2 test1 test3 4 ■期待する結果 総合マッチランキング 1. test3 (6point) 2. test2 (4point)
- ベストアンサー
- MySQL
- 固定値を含む結合と複数テーブルの結合について
「1.固定値を含む結合」と「2.複数テーブルの結合」について教えて下さい。 最近oracleを使い始めてSQLで表の結合を書く場面があるんですが LEFT(RIGHT) JOIN を使うのか、(+)を使って書くのかで迷っています。 LEFT(RIGHT) JOINだと固定値を含めて外部結合しようとするとエラーになってしまいます。 それが嫌で(+)を使っていたんですが 今度は複数のテーブルを(+)で結合しようとするとエラーになってしまいます。 (AテーブルとBテーブル、AテーブルとCテーブルなど?) こういう場合はどうすれば良いのでしょうか? とりあえず副参照をFROMに指定して対処してるんですが 何かきちんとした書き方があるのでしょうか?誰か教えて下さい。
- ベストアンサー
- Oracle
- テーブル結合について
テーブルの結合についてお聞きしたいことがあります。 カラム「KEY」を結合条件に テーブルA、B、Cを結合して【取りたい結果】のようなデータを取りたいと思っています。 しかし、テーブルAにBとCをLEFT JOINを結合した所、 【取得された結果】のデータが取得されました。 どのような結合をしたら期待通りの結果が得られるのでしょうか? 回答宜しくお願いします。 【取得された結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 B-1 C-2 A-1 B-1 C-3 2 A-2 3 A-3 【取りたい結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 C-2 A-1 C-3 2 A-2 3 A-3 【テーブルA】 key dataA --------------------- 1 A-1 2 A-2 3 A-3 【テーブルB】 key dataB --------------------- 1 B-1 【テーブルC】 key dataC --------------------- 1 C-1 1 C-2 1 C-3
- 締切済み
- Oracle
- 複数テーブルを結合するには?
OS:WINDOWSXP SP2 ORACLE:Oracle9i Enterprise Edition Release 9.2.0.1.0 A, B, Cというテーブルがあるとします。 それぞれのテーブルには XXカラムと YYカラムがあるとします。 2つのテーブルを結合させるには、以下のSQL文を記述すれば良いと考えています。 SELECT A.*,B.* FROM A JOIN B ON A.XX = B.XX 3つのテーブルを結合するには、以下のSQL文を記述しています。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX JOIN C ON A.XX = C.XX 但し、この記述方法でいきますと、Cテーブルを右側外部結合に指定した場合のみ、 ORA-00904 "C" 無効な識別子です。 というエラーメッセージが表示されます。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX RIGHT OUTER JOIN C (←LEFT OUTER、FULL OUTER)なら通ります) ON A.XX = C.XX 何故、右側外部結合のみ不正となるのか不明であり、解決策が見つかりません。 複数のテーブルを結合する為のSQL文の記述方法を教えて頂けますでしょうか?
- ベストアンサー
- Oracle
- テーブルを結合して新規にテーブルに・・・
アクセス2003でSQLを組んでデータベースを作っています。 まず、ユニオンクエリを使ってAクエリとBクエリを結合しました。 この結合したものを新規にテーブルを作成したいのですが、どうすれば良いでしょうか? 手順を教えて頂ければ幸いです。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
お礼
ものごとをひとつづつ考える事が大切だったんですね。 SQLの苦手意識が少しなくなりそうです。 最高のご回答に感謝します。ありがとうございました。