• ベストアンサー

別のテーブルから数値を取得したい

g_express999の回答

回答No.1

質問内容の結果を求めるには、 select syohin,souryou from syohin A,souryou B where A.type = B.souryou and A.type = B だと思います。

apricot777
質問者

補足

mysql> select * from syohin; +--------+------+ | syohin | type | +--------+------+ | 001 | A | | 002 | B | | 003 | C | +--------+------+ 3 rows in set (0.00 sec) mysql> select * from souryou; +------+---------+ | type | souryou | +------+---------+ | A | 500 | | B | 1000 | | C | 1500 | +------+---------+ 3 rows in set (0.00 sec) mysql> select syohin,souryou from syohin A, souryou B where A.type = B.souryou and A.t ype = 'B'; Empty set (0.00 sec) という結果になってしまいました。 mysql> select syohin,souryou from syohin A, souryou B; +--------+---------+ | syohin | souryou | +--------+---------+ | 001 | 500 | | 002 | 500 | | 003 | 500 | | 001 | 1000 | | 002 | 1000 | | 003 | 1000 | | 001 | 1500 | | 002 | 1500 | | 003 | 1500 | +--------+---------+ ここまでは、#2の方と書式は違うけれど、同じ結果が出ていますので、where句以降を修正すれば希望通りの結果が出ると思います。ヒントをいただきましてありがとうございます。

関連するQ&A

  • Aテーブルの条件でBテーブルから抜き出し

    すみません。大変困っています。 SQL文で Aテーブル、Bテーブルがありまして、 A.id = B.idがリレーションしています。 Aテーブルから、Bテーブルのidが無いデータだけを 取り出したいのですが、どういった例が考えられますでしょうか?よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 商品テーブルと2つの在庫テーブルの結合ができない

    商品のデータベースがあるんですが、一つの商品テーブルに複数の店舗の商品をまとめて登録しています。在庫数は店舗別のテーブルで分けているのですが、これをSQLで商品コードで結合ができません。 仮に商品がA、B、Cと登録されていたとして、店舗1にはAとBの商品があるため2つの在庫数を設定しており、店舗2にはBとCの商品があるため2つの在庫数を設定しています。 つまり片方のみの商品もあれば両方に存在する商品があります。 このときにSQLで商品情報を取得する場合に、結合したいのですが結果が0件となり上手く結合ができません。 商品コードがBのときにSELECT文で両店舗の在庫数を同時に取得したいし、AやCではそれぞれの店舗在庫を取得したいのですが、何か良い方法はないものでしょうか?

    • ベストアンサー
    • MySQL
  • 別テーブルの抽出方法について

    初心者質問で恐縮なのですが、 テーブルAを正規化してテーブルBを作成したとします。 さらにテーブルBを正規化し、テーブルCを作成します。 そこで、そのテーブルA、B、Cからあるレコード1つ抽出するにはどのようなSQL文を書けば抽出できますでしょうか。 また、テーブルに外部キー制約などを用いてリレーショナル関係を築いた場合、そのメリットは更新、削除等で他のレコードと間違えないことであるということの他になにかありますでしょうか? ご存知の方、宜しくお願いします。

  • 複数テーブルを結合するには?

    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文の記述方法を教えて頂けますでしょうか?

  • 他のDBのテーブルと内部結合が可能でしょうか

    他のDBのテーブルと内部結合が可能でしょうか sql sever 2005 を使用します。このたび、データベースAのテーブルaを定期的に検索するsqlを作成することになりました。このsql文は、ストアードプロシージャとして登録予定です。 その際、テーブルbを内部結合で参照します。例として、テーブルaは社員番号があり、テーブルbは社員番号、社員名があります。(テーブルbは社員マスター) テーブルaを参照し、その社員名を内部結合(INNER JOIN)で取り出します。 ここで、テーブルa,bが共に、同じデータベース内にある場合は、問題ないのですが、 テーブルbは、別のマシンのsql sever 上にあります。(したがって、データベース名も異なります) このような状態で、内部結合による参照は可能でしょうか? また、内部結合ができないまでも、ストアードプロシージャで、データベースAのテーブルaを参照しながら、別のマシンのデータベースBのテーブルbを参照することは、原理的に可能でしょうか。 なお、データベースは共にsql server 2005を使用します。

  • テーブルとテーブルを結合したい

    同じフィールドを持つテーブル同士のデータを結合して、別のテーブル又はクエリに表示させたいのですが、こんなことできますか?できるとすればどうすればよいのですか? 例:テーブルAの商品フィールドのデータとテーブルBの商品フィールドのデータを一つにまとめてテーブルC又はクエリCに表示させたい。

  • MySQL複数テーブルからの情報取得に関しまして

    Aテーブル...ユーザ情報 Bテーブル...商品情報(AテーブルのユーザIDを列として持っています) Cテーブル...アイテム情報(Bテーブルの商品IDを列として持っています) Bテーブルの一覧リスト表示の画面にて、検索項目として、 Aテーブルのユーザ名、Cテーブルのアイテム名があります。 現在は、LEFT JOINを使って、検索、呼び出しを行っておりますが、 多数のカラムを指定して呼び出しを行っているため、SQL文が長くなってしまっており、 もっとすっきりとしたSQL文を記述したいと考えております。 ※Aテーブル,Bテーブルの組み合わせは他の画面でもよく使われております。 viewという機能を使うことによって、これをすっきりと記述できるようになるのではないかと考えておりますが、viewはこのような使い方をしてもいいのでしょうか。 または、もっとすっきりとした記述を行う技術のアドバイスをお願いいたします。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • SELECT/別テーブルのレコード数も取得したい

    ■環境 ・MySQL ■前提 ・テーブルA … idカラム ・テーブルB … A_idカラム ■やりたいこと ・テーブルAデータを取得する際、テーブルAレコードに応じて、テーブルB「A_idカラム」の数(レコード数)も取得したい ■取得イメージ例 ・テーブルA「全カラム」、「count」カラム ※「count」カラム … テーブルBにある「A_idカラム」の数 ■知りたいこと ・どこにも存在しないこの「count」カラムはどうやって作成したら良いでしょうか? ・全体のSQL文

    • ベストアンサー
    • MySQL
  • 2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。

    2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか?  また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。 ※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。 テーブルA 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2000-03-03  定規     A    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A テーブルB 顧客番号   売上日   商品名   備考    4  2001-04-04  シャーペン  B    2  2000-02-02  鉛筆     B    3  2001-03-03  定規     B    1  1999-01-01  ふでばこ   B  100  2005-11-11  ワープロ   B テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。 テーブルC 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2001-03-03  定規     B    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A  100  2005-11-11  ワープロ   B SQL文で処理可能なのでしょうか?

  • 【SQL文】このような結合UNION?できますか?

    SQL文でテーブルを結合し、insertしたいと思っています。 例) テーブル名:tb1, カラム:A1,A2 テーブル名:tb2, カラム:B1(b1,b2,b3,,,,) テーブル名:tb3, カラム:C1(c1,c2,,,,,,) tb2とtb3を結合させてtb1へinsertしたいと思いますが、 tb2とtb3リレーションを組める要素がありませんし、データの型も違います。 |A1 | A2 __|____|_____ 1 |b1 |c1 _____________ 2 |b1 |c2 _____________ 3 |b2 |c1 _____________ 4 |b2 |c2 _____________ 上記のような結果を作ってtb1へINSERTしたいのですが、UNION結合を使えるのか どうかすらわかりません。ネットで調べたのですが、突破孔を見つけることができ ませんでした。 ちなみにACCESSで結合までの結果を得るのに、SELECT B1.tb2,C1.tb3 from tb2,tb3 という文で出せましたが,mySQLではダメでした。 どなたかご教授おねがいできますでしょうか?

    • ベストアンサー
    • MySQL