- ベストアンサー
SQL Server複数テーブルの連結方法とは?
s-eijiの回答
- s-eiji
- ベストアンサー率40% (2/5)
No1とNo2の方の回答に補足して 結合する前のそれぞれのクエリにある SUM(実在庫)等に AS ○○○ を付与しないと ISNULL(実在庫,0) の判定がされないように見えます SELECT 部門CD,店舗CD,商品CD,SUM(実在庫) FROM 棚卸 ↓ SELECT 部門CD,店舗CD,商品CD,SUM(実在庫) AS 実在庫 FROM 棚卸 以上、参考になれば幸いです
関連するQ&A
- 複数テーブルを結合するには?
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
- SQL SERVER 店舗毎のTOP10
表題の件のSQLについてアドバイスお願いいたします。 DB:SQL SERVER 2008 R2 テーブル:売上伝票 カラム 店舗|伝票No|伝票日付|商品CD|商品名|数量|単価|金額(数量x単価) SELECT TOP 10 店舗NO, 商品CD, 商品名, SUM(数量) AS 販売数, SUM(金額)AS 販売金額 FROM 売上伝票 WHERE 伝票日付 BETWEEN [開始日] AND [終了日] GROUP BY 店舗NO,商品CD,商品名, ORDER BY 店舗NO,販売金額 DESC 当然ですが、上記のSQLでは、一番若い店舗NOのトップ10しか抽出できません。 店舗別、販売金額のトップ10を抽出するための、SQL文についてお教えください。
- 締切済み
- SQL Server
- テーブルの結合について質問です。
テーブルの結合について質問です。 テーブル名:SHOSAI SELECT T1.TIMESTAMP AS 登録, T1.UPDATE AS 更新, T2.CONTENT AS コード, . . . FROM SHOSAI T1 LEFT OUTER JOIN X_CODE T2 ON T1.Y_CODE = T2.CODE テーブル名:SHOSAI SELECT T1.TIMESTAMP AS 登録, T1.UPDATE AS 更新, T2.CONTENT AS コード, T1.BANGO AS 番号, T3.CONTENT AS 曜日, . . . FROM JOHO T1 LEFT OUTER JOIN X_CODE T2 ON T1.Y_CODE = T2.CODE LEFT OUTER JOIN H_CODE T3 ON T1.J_CODE = T3.CODE . . . この2つのテーブルを結合したいのですが それぞれのデータ数が300あり SELECT*で呼びだしてもCSEはエラーとなってしまいます。 項目名を選定してプログラムを組んでもうまくできません。 良い方法があれば教えてください。
- ベストアンサー
- MySQL
- 連結棚卸についての質問
現在2店舗の生鮮部門で連結棚卸を実施しています。先月25日に新店舗が加わり、3店舗の棚卸を実施したところ利益率が下がりました。仕入と在庫が増えていて新店舗分の売上が1週間分しかない為だと思いますが何故このような状況になるのかうまく説明するにはどうしたらよいでしょうか? ちなみに3店舗の売上、仕入、在庫を合算しての棚卸を行いました。商品に関しては1店舗から他の2店舗に移動しております。
- 締切済み
- 財務・会計・経理
- 複数のテーブル結合と件数の表示
現在、3つのテーブルを結合して、特定の場所のみ件数を表示するSQLを作成しようとしています。 MySqlバージョン5.0.27 レイアウト的には以下の感じです。 販売員テーブル 販売員ID 店舗ID 販売員名 1 1 販売員A 2 1 販売員B 3 2 販売員C 4 2 販売員D 5 3 販売員E 店舗テーブル 店舗ID 店舗名 1 店舗A 2 店舗B 3 店舗C 売却履歴 履歴ID 販売員ID 売却日 会員フラグ 1 1 2007/11/01 1 1 1 2007/10/01 0 1 2 2007/10/01 1 1 2 2007/10/01 1 1 3 2007/09/01 1 1 4 2006/01/01 0 結果 販売員ID 販売員名 店舗名 販売回数 会員勧誘回数 1 販売員A 店舗A 2 1 2 販売員B 店舗A 2 2 3 販売員C 店舗B 1 1 4 販売員D 店舗B 0 0 5 販売員E 店舗C 0 0 販売回数は今年度の範囲内で検索をかけています。(日にちが2007/01/01以上) 現在テーブルを連結して表示までは出来るのですが、履歴の内容を日付で絞りカウントして持ってくる処理が成功しません。 結合のSQLは以下の通りです SELECT 販売員.*, 店舗.店舗名,履歴.* FROM ( 販売員 LEFT JOIN 店舗 ON 販売員.店舗ID = 店舗.店舗ID) LEFT JOIN 履歴 ON 販売員.販売員ID = 履歴.販売員ID 結合時にCOUNT等の処理や条件を使って日付で絞り込む方法がいまいちよくわからない状況です。 ご教授よろしくお願いいたします。
- ベストアンサー
- MySQL
- SQL文のエラーについて
下記のSQL文な実行するとエラーになってしまいます。 数時間考えましたが、上手く行きません。 どなたか教えて頂けないでしょう? 宜しくお願いします。 DB:アクセス97 アクセス2000 SQL実行中に以下のエラーが発生しました。 エラーコード:-3010 [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。1 を指定してください。 SQLステータス:07001 SELECT mid(U.受払年月日,1,6), U.部門CD, 部門マスタ.部門名, U.商品CD, 商品マスタ.商品名, U.科目CD, 科目マスタ.科目名, U.SUM受払数 FROM (部門マスタ INNER JOIN ((SELECT mid(受払年月日,1,6),部門CD,商品CD,科目CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 BETWEEN '201101' and '201105' GROUP BY mid(受払年月日,1,6),部門CD,商品CD,科目CD) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部門マスタ.部門CD = U.部門CD ) INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD ORDER BY U.受払年月日, U.部門CD, U.商品CD, U.科目CD
- 締切済み
- その他(データベース)
- 商品テーブルと2つの在庫テーブルの結合ができない
商品のデータベースがあるんですが、一つの商品テーブルに複数の店舗の商品をまとめて登録しています。在庫数は店舗別のテーブルで分けているのですが、これをSQLで商品コードで結合ができません。 仮に商品がA、B、Cと登録されていたとして、店舗1にはAとBの商品があるため2つの在庫数を設定しており、店舗2にはBとCの商品があるため2つの在庫数を設定しています。 つまり片方のみの商品もあれば両方に存在する商品があります。 このときにSQLで商品情報を取得する場合に、結合したいのですが結果が0件となり上手く結合ができません。 商品コードがBのときにSELECT文で両店舗の在庫数を同時に取得したいし、AやCではそれぞれの店舗在庫を取得したいのですが、何か良い方法はないものでしょうか?
- ベストアンサー
- MySQL
- SQL SERVER2005のJOINについて
はじめて投稿させていただきます。 SQL SERVER2005のJOINの仕方で困っています。 どなたか、アドバイスをお願いできないでしょうか。 テーブルA CD NAME KBN 1 山田太郎 1 2 山田花子 1 3 山田次郎 2 4 山田五郎 1 テーブルB CD NENGETU DAY1 DAY2 DAY3 ~ DAY31 1 200811 ◎ ◎ 1 200812 ◎ 3 200810 3 200811 ◎ 4 200811 ◎ 欲しい結果の条件と結果は テーブルAは、KBN = 1 のみ テーブルBは、NENGETU = 200811 但し、テーブルBには、テーブルAに存在しないCDもあります。 CD NAME KBN DAY1 DAY2 DAY3 ~ DAY31 1 山田太郎 1 ◎ ◎ 2 山田花子 1 4 山田五郎 1 ◎ 以上の結果を取得したいSQLを書きたいのですが、 Select CD,NAME,KBN,DAY1,DAY2,DAY3~,DAY31 From テーブルA LEFT OUTER JOIN テーブルB On テーブルA.CD = (Select テーブルB.CD From テーブルB Where テーブルB.NENGETU = 200811) Where テーブルA.KBN = '1' Order By テーブルA.CD とかでやると、CDの1が複数出たりして おかしい結果になってしまいます。 どなたか、アドバイスをお願いできないでしょうか。
- ベストアンサー
- SQL Server
- Left outer join とかのLeft
Left outer join とright outer join ですが、解説などをみると、左右に表が描かれてあって、線を引いたりして結合していくのですが、 何をもって左とか右とかいうのでしょうか? テーブル1が左で、テーブル2が右みたいな感じで解説されるのですが、先に出てきた1も、あとに出てきた2も、単に出てきた順番であり、記号と思われます。1と2を入れ替えたら同じことです。Left outer join Table1 もRight outer join Table2 も同じことのように思われます。私はなにか勘違いしているのでしょうか?
- ベストアンサー
- PostgreSQL
- 複数の外部結合
こんにちは、外部結合の仕方についてお聞きしたいのですが、 このSQL1で抽出されたデータにさらに TABLE3テーブルのデータを追加したくSQL2を作成したのですが、 うまくいきません。 ON TABLE1.[Code]=TABLE3.[Code]の部分をどのように記述すればよいのでしょうか? SQL1--------- TABLE1.[tamp] [Child], TABLE2.* FROM [p].[Price] TABLE1 LEFT OUTER JOIN [p].[Receive] TABLE2 ON TABLE2.[Code]=TABLE1.[Code] SQL2---------- TABLE1.[tamp] [Child], TABLE2.*, TABLE3.* FROM [p].[Price] TABLE1 LEFT OUTER JOIN [p].[Receive] TABLE2 ON TABLE2.[Code]=TABLE1.[Code] LEFT OUTER JOIN [p].[Product] TABLE3 ON TABLE1.[Code]=TABLE3.[Code]
- ベストアンサー
- Oracle
お礼
s-eiji様 アドバイスありがとうございます。 試してみます。