• ベストアンサー

SQLで違うテーブルの結果を組み合わせたい

chukenkenkouの回答

回答No.1

>ただ全く関係のないテーブル同士の結果を「横並び」表示にしたいだけです ルールが明確でないから、他人からアドバイスできないし、SQLも提示できないのです。 データは今回示されたもの以外、一切、存在しないのですか?それならば、強引にSQLを記述することも可能です。 そもそも、今回の得たい結果というのは、すべて条件式で指定している訳で、SQLでは存在の有無だけ分かればいいのでしょうか? RDBMSを使う意味、SQLを使う意味が、まったくないと思いますが?

関連するQ&A

  • SQLで関係のないテーブルの内容を合体させたい

    SQLでの副問い合わせ(サブクエリ)について教えて下さい。自分の出したい結果が思うように得られず悩んでおります。 結果を得たものをCSVに落としたいわけですが”見え方”ヴィジュアル面に問題があります。 欲しい結果をそれぞれSQLにしますと ≪受注表テーブルから≫ SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '003' ; SELECT 担当, 顧客コード FROM 受注表 WHERE 担当 = '田中' AND 商品コード = 'A1' AND 顧客コード = '020' ; ≪入荷表テーブルから≫ SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X013' AND 入荷日 = '20080701' ; SELECT 担当, 入荷日 FROM 入荷表 WHERE 担当 = '田中' AND 入荷コード = 'X123' AND 入荷日 = '20080630' ; ≪欲しい結果の見え方≫ 担当 顧客コード 担当 顧客コード 担当 入荷日 担当 入荷日 ── ───── ── ───── ── ─── ── ───── 田中 003 田中 020 田中 20080701 田中 20080630 田中 003 田中 020 田中 20080701 田中 20080630 このように関係のないレコードを横並びにするにはどうしたらよいでしょうか? 使っているDBはOracle10、SQL server、MySQL、HiRDBそれぞれで実行したいのですが・・・ どなたかご教示ください。

  • SQLでNOT INと!=ALLの違い

    現在、仕事で使用する機会がありそうなのでOracleでSQLを勉強しています。 ある教本の練習問題をしていて気になったので質問させてください。 単純な受注に関するデータベースの問題です。 CUSTOMER_TとSLIP_Tというテーブルがあり、 CUSTOMER_Tは顧客コード、顧客の名前、顧客の住所が載っています。 SLIP_Tは受注番号、発注した顧客の顧客コード、受注した日が載っています。 2007年1月10日以降に受注したことのない顧客の名前を出力する問題なのですが私は以下のように解答しました。 SELECT CUST_NAME FROM CUSTOMER_T WHERE CUST_CODE != ALL(SELECT CUST_CODE FROM SLIP_T WHERE SLIP_DATE >= '2007-1-10'); しかし解答は以下でした。 SELECT CUST_NAME FROM CUSTOMER_T WHERE CUST_CODE NOT IN(SELECT CUST_CODE FROM SLIP_T WHERE SLIP_DATE >= '2007-1-10'); 自分で簡単なデータベースを作り試してみたのですが出力結果は同じになりました。 この二つのSQL文の違いにどのような問題があるのでしょうか?よろしくお願いします。

  • SQL文でexistsの使い方がわかりません。

    受注表と作業員表のデータベースをaccessで作りました。 受注表の中には受注CD、作業開始時間、作業終了時間、作業日、作業員1、作業員2のフィールドがあります。 作業員表には氏名、作業可能開始時間、作業可能終了時間 作業可能日のフィールドがあります。 受注表に登録する作業員の氏名を一覧表で表示させたいときはどのようなSQL文を作れば良いのでしょうか? 受注表には作業日が同じで作業開始時間と作業終了時間が重なるものがあり、その場合には先に受注した作業に担当者1か担当者2として登録されている作業員は一覧表に表示させないようにしたいのですがやり方がわかりません。not existsの中が特にわかりません。 select 氏名 from 作業員表 where 作業可能開始時間 <= 1430 and 作業可能終了時間 >= 1530 and 作業可能日=2010/10/1 and not exists (select * from 受注表 where 受注表.作業員1 = 作業員表.氏名 or 受注表.作業員2 = 作業員表.氏名 and 受注表.作業開始時間 <= 1430 and 受注表.作業終了時間 >= 1530 and 受注表.作業日=2010/10/1) 上記のSQL文を作って受注表に登録されていない作業員を表示させようと試してみましたが失敗しました。 作業日、作業開始時間、作業終了時間はフォームを作成してそこで入力します。

  • AccessVBAでSQL文を書いています

    私の環境はOS:Xp      ACCESS2000です。 宜しくお願いします。 タイトルの通りSQL文を書いているんですが、書き方が解りません。 sql = "select 顧客コード from ポイント管理テーブル " sql = sql + " where 顧客コード = '" & Me.顧客コード & "'," sql = sql + " 受注年 = '" & Me.受注年 & "'," sql = sql + " 受注月 = " & Me.受注月 & "," sql = sql + " 受注日 = " & Me.受注日 & "" 初歩的な質問なのですが、上記はどのように記述したらよいのでしょう? ちなみに、顧客コードと受注年がテキスト型 受注月と受注日は数値型としてテーブルに持っています。 よろしくおねがいします。

  • 重複するレコードを調べるSQL

    重複するレコードを調べるSQL 初歩的な質問ですみません! 重複するレコードを調べるために以下のようなSQLを作ったのですが、 遅くて困っています。 もっと速くする方法があれば教えてください! 異なるカテゴリーでも商品コードが重複しているものがないかを探すSQLです。 SELECT A.商品コード, A.X, B.カテゴリー FROM (SELECT COUNT(商品コード) X, 商品コード FROM テーブルA WHERE 追加年月 = 201008 GROUP BY 商品コード) A, (SELECT 商品コード, カテゴリー FROM テーブルA WHERE 追加年月 = 201008 ) B " WHERE A.X >= 2 AND B.商品コード = A.商品コード

  • 12年秋 午後 問5 設問1

    本題とは関係ないのですが 問題の中で以下の表現があります ------------------------------------------------------------ 例 SELECT 受注明細表.受注番号, 顧客名, SUM(注文数量*単価)   FROM 受注明細表, 顧客表, 商品表, 注文表   WHERE 顧客表.顧客コード = 注文表.顧客コード   AND 受注明細表.商品番号 = 商品表.商品番号   AND 受注明細表.受注番号 = 注文表.受注番号 ------------------------------------------------------------- ここで受注明細表.受注番号 = 注文表.受注番号 の比較は なにも絞り込んでいるのでしょうか? 必要性が理解できません

  • SQLでの集計結果取得について

    以下のようなSQLを書いたのですが,ほしい結果が得られませんでした。 受注に存在しない得意先についても得意先コードと得意先名を得たかったので、 "from 受注 Right Outer Join 得意先 On 受注.得意先コード = 得意先.得意先コード" としたのですが, 受注に存在しない得意先についてはデータが得られませんでした。さらに、Where句で、"受注.得意先コード =* 得意先.得意先コード"と書くとエラーが出てきてしまいました。 どうすれば得意先に存在する得意先すべての集計結果が得られるのでしょうか? String sql = "Select 得意先.得意先コード, Min(得意先.得意先名) " + "As 得意先名, Sum(受注.受注合計金額) " + "from 受注 Inner Join 得意先 " + "On 受注.得意先コード = 得意先.得意先コード " + "where 受注.得意先コード = 得意先.得意先コード " + "and 受注状態区分 = '" + joutaiKubun + "' " +      "and 納入日 between '" + startYMD + "' and '" +        "endYMD + "' " + "Group By 得意先.得意先コード " +      "Order By 得意先.得意先コード ";

    • ベストアンサー
    • Java
  • SQLを教えて下さい

    過去の質問(http://okwave.jp/qa/q8830539.html)ですが、 仕入れテーブルの入荷日2014/1/2分はどこに書けばいいのでしょうか 下記のようにwhereの中に書くとエラーになってしまいます delete 仕入れテーブル where (商品,規格,入荷日='2014/1/2') in (select 商品,規格 from 商品テーブル where 担当 = 'Bさん')

    • ベストアンサー
    • MySQL
  • SQL文

    名前、性別、年齢の載っているA表から19歳以下の女性、または26歳以上の女性の名前を抽出するSQL文はSELECT 名前 FROM 表A WHERE 性別=’女’AND 年齢<20 OR 性別=’女’AND 年齢>25 が正解ですが、性別=’女’を1回にして SELECT 名前 FROM 表A WHERE 性別=’女’AND 年齢<20 OR  年齢>25 ではだめでしょうか。教えてください。

  • ACCESSを活用して商品変動を捉えたい(6再再)

    クエリー14 http://okwave.jp/qa/q8781488.html を参考にSELECT構文を作っていますが、、、 上記URLの画面のようには出ず、以下のようになります。 ※商品名、商品コードが変わらない「大島太陽」も抽出される(数量、価格が変化しているだけ) ※ 前回受注日 切り替え 受注日 氏名 会員番号 商品コード 商品名 数量 価格 2014/04/01 山田花子 12345678 55555 魔法瓶 1 2980 2014/04/01 30 2014/05/01 山田花子 12345678 33333 御茶碗 1 1280 2014/05/01 75 2014/07/15 山田花子 12345678 22222 洗面器 1 980 2014/04/02 大島太陽 34567890 55555 魔法瓶 1 2980 2014/04/02 42 2014/05/14 大島太陽 34567890 55555 魔法瓶 2 5960 クエリー14のイメージで間違えないでしょうか。 SELECT DBLookup("SELECT 受注日 FROM 受注履歴 WHERE 会員番号=" & [会員番号] & " AND 受注日 < #" & [受注日] & "# ORDER BY 受注日 DESC") AS 前回受注日, DateDiff("d",前回受注日,受注日) AS 切り替え, * FROM 受注履歴 WHERE (((DBLookup("SELECT COUNT(受注日) FROM 受注履歴 WHERE 会員番号=" & [会員番号]))>1)) ORDER BY 受注履歴.会員番号, 受注履歴.受注日;