• ベストアンサー

mysqlのSQL文の書き方について

mysqlでA,Bのテーブルがあるとします。 A ID1 りんご ID3 みかん ID4 ぶどう B ID2 メロン ID3 みかん ID4 ぶどう この二枚のテーブルでどちらかのテーブルに存在すればヒットする ようなselec文はどう書いたらいいのでしょうか。重複する行は、 一行のみ抜き出したいです。 こういうかんじにです。 ID1 りんご ID2 メロン ID3 みかん ID4 ぶどう よろしくお願いします。

  • ishi
  • お礼率68% (26/38)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

union句そのままで行けませんか? select id,name from A union select id,name from B (カラム名はIDxx:id,フルーツの名前:nameとしています) 【補足】 unionはselect文の結果を統合します。 結果を重複させる場合には、「union」を「union all」とします。 重複する行は一行のみ、という場合は、「union」だけで大丈夫ですが、同じ行を省くために、 select id,name from A union select distinct id,name from B とした方が明示していてわかりやすいです。。。

ishi
質問者

お礼

ありがとうございます。 できました。

関連するQ&A

  • SQL文について

    SQLの抽出方法について質問です。 【会員】テーブル関連 すきなフルーツを複数選択できます。 テーブル【MEMBER】と【MEMBER_FRUIT】2つのテーブルで管理 例: Aさんは「りんご」「みかん」「スイカ」がすきです。 Bさんは「りんご」「メロン」がすきです。 Cさんは「みかん」「スイカ」がすきです。 テーブル【MEMBER】 ID、MEMBER_CD、MEMBER_NAME 1  10       Aさん 2  20       Bさん 3  30       Cさん ・ ・ テーブル【MEMBER_FRUIT】 ID、MEMBER_CD、FRUIT_CD 1   10      1 2   10      2 3   10      3 4   20      1 5   20      4 6   30      2 7   30      3 ・ ・ テーブル【FRUIT】 ID、ITEM 1 りんご 2 みかん 3 スイカ 4 メロン 【抽出条件】関連 条件も複数選択できます。 テーブル【SEARCH】と【SEARCH_DETAIL】2つのテーブルで管理 ※会員を抽出条件を管理するテーブル テーブル【SEARCH】 ID、TITLE 1 「りんご」または「メロン」がすきな人 2 「スイカ」がすきな人 ・ ・ テーブル【SEARCH_DETAIL】 SEARCH_ID、FRUIT_CD 1         1 1         4 2         3 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・     【SEARCH】のID1の出力結果イメージ MEMBER_CD、MEMBER_NAME 10         Aさん 20         Bさん こんなSQLを作成してみました。 【SEARCH】テーブルをループで1件づつ処理しようと考えています。 他にもっと効率がいいSQLがありますか? よろしくお願いします。 SELECT DISTINCT MEMBER.MEMBER_CD, MEMBER_NAME FROM MEMBER,MEMBER_FRUIT WHERE MEMBER.MEMBER_CD = MEMBER_FRUIT.MEMBER_CD AND MEMBER_FRUIT.FRUIT_CD in ( SELECT FRUIT_CD FROM SEARCH,SEARCH_DETAIL WHERE SEARCH.ID = SEARCH_DETAIL.SEARCH_ID )

  • mysqlのsql文について教えて下さい

    mysqlのsql文について教えて下さい 下記のようなテーブルとデータがあった場合に どうやれば 2,次郎だけを抽出できますか? 本日日付(2010-08-06)が 既にテーブルBにdateが存在する場合は 3,1,2010-08-04 3,1,2010-08-06を 対象外にしたいです。 Aテーブル id,user 1,太郎 2,次郎 3,3郎 Bテーブル targetid,homonid,date(datetime型) 3,1,2010-08-04 3,1,2010-08-06 3,2,2010-08-05 下記だと2010-08-04にヒットしてしまい(当たり前?)動作しません。 select distinct a.* from tblA a, tblB b where date_format(b.date, "%Y-%m-%d") <> "2010-08-06" ;

  • SQL文で表すには

    以下の表を用いてSQL文を作成しようと思ってるんですが、途中までしか思いつかないので、どなたかご教授のほうよろしくお願いします。 shohin shiire 商品番号 商品名 単価   仕入番号 仕入先名  0001 みかん 100     001  A 0002 りんご 200     002 B 0003 ぶどう 300     003   C tran 購入番号 商品番号 仕入番号 数量 1 0001 001 1 2 0001 002 2 3 0001 003 3 4 0001 001 4 5 0001 002 5 6 0002 003 6 7 0002 001 7 8 0002 002 8 9 0003 003 9 10 0003 001 10 11 null 0004 20 これを以下のように出力するためにはどのようなSQL文を書けばよいですか? 商品番号 商品名 仕入番号 仕入先名 数量 単価 金額  0001 みかん 001    A   5 100 500  0001 みかん 002    B   7 100 700  0001 みかん 003    C   3 100 300  0002 りんご 001    A   7 200 1400  0002 りんご 002    B   8 200 1600  0002 りんご 003    C   6 200 1200  0003 ぶどう 001    A   10 300 3000  0003 ぶどう 003    B   9 300 2700  0004 null 004   null   20 null null ここまでは正しいと思うのですが・・・ select shohin.商品番号, shohin.商品名, shiire.仕入番号,     tran.数量, shohin.単価, tran.数量 * shohin.単価 as 金額 よろしくお願いします。

  • 行数をカウントするSQLにつきまして

    行数をカウントするSQLにつきまして いつもお世話になっております。 下記の売上テーブルから りんご=3(行) みかん=2(行) メロン=1(行) というようなデータを抽出するSQLはどのように記述したら良いのでしょうか? ・・・・売上テーブル・・・ 売上番号 品名 単価 1     りんご 100 2     りんご 100 3     りんご 100 4     みかん 150 5     みかん 150 6     メロン 250

  • エクセルで別の行に並んだ重複データをチェックしたい

    ネットで色々調べてはみたのですがやり方がいまいち見つからずどなたかお力添えいただけると幸いです 同じ行にならんでいるデータ内で重複するものを見つける関数はわかったのですが 別の行に並んでいるそれぞれのデータで重複するものを見つけるやり方はありますか? 例)      A    B 1  みかん  りんご 2  みかん  ぶどう 3  りんご   もも 上記の場合、A3のりんごとB1のりんごが重複していますがこれを探したいのです ※A1のみかんとA2のみかんは含みません 不慣れな質問で大変恐縮ですが何卒よろしくお願いいたします

  • Accessのクエリーで。

    テーブルA ID テーブルB ID 年 種類 テーブルC ID 年 種類 備考 テーブルCはBの詳細をかいたようなものになっていて、希望した時だけみられるようになっています(クリックする)。 これらのテーブルをもとにクエリーを作成しました。 テーブルA-B-Cの「ID」でリレーションがされています。 B-Cの「年」もリレーションされています。 たとえば、10というIDの人がいて、2001年と2002年のデータがあったとします。 ID | 年   | 種類 | 備考 10 | 2001 | みかん | 10 | 2002 | りんご | 青森産 10 | 2002 | みかん |愛媛産 10 | 2002 | めろん | というような感じだとします。 これがそれぞれABCに入っています。 クエリーのリレーションで「種類」にリレーションを貼らないと、 10 | 2002 | りんご | 青森産 10 | 2002 | りんご | 愛媛産 10 | 2002 | りんご | 10 | 2002 | みかん | 青森産 10 | 2002 | みかん | 愛媛産 10 | 2002 | みかん | 10 | 2002 | めろん | 青森産 10 | 2002 | めろん | 愛媛産 10 | 2002 | めろん | とダブッてしまい、「種類」でリレーションをはると 10 | 2002 | りんご | 青森産 10 | 2002 | みかん | 愛媛産 と、備考に何かが入ってるものしか出なくなってしまいます。 これを回避するにはどのようにしたらいいのでしょうか? よろしくお願いします。 AC2000です。

  • 行内で空白、重複を除いた結果を別セルに表示したい

    A~D列に言葉が入っているのを、F列以降に空白、重複を除いて、結果を表示したいのですが、やり方がわかりません。(別シートではなく、同じシート内で処理したいです。) A~D列に入る言葉は200個程の種類があります。 行は4万行くらいのデーターがあるので行列を入れ替えた表には出来ません。 ジャンプで空白セル選択→まとめて削除をすると、データー数が多いので、パソコンが固まってしまいました。 なので、行ごとに処理をしたいのです。 よろしくお願いします。  A     B   C    D        F     G    H    I みかん ぶどう りんご みかん → みかん りんご ぶどう みかん (空白) (空白) みかん → みかん (空白) ぶどう りんご みかん → ぶどう  りんご みかん みかん ぶどう りんご すいか → みかん ぶどう りんご すいか

  • excelで自動的に連番をつける関数について

    excel2010を使用しています。 題名のとおりexcelで連番をつけたいと思っているのですが、ただ単純に1から順にというわけではなく困っています。 というのも例のように途中で重複しているデータについては、´(ダッシュ)などで印をつけておきたいのです。 【例】 A  B 1 りんご 2 みかん 3 ぶどう 3´ ぶどう 4 いちご 5 メロン 5´ メロン 5´ メロン 6  桃 B列にあるデータがあり、それをもとに重複しているデータは印をつけた連番をA列にふりたいのですが、どのような関数で出来ますでしょうか?よろしくお願いします。

  • 行数をカウントするSQLにつきまして

    行数をカウントするSQLにつきまして いつもお世話になっております。 下記の売上テーブルから みかん=3(行目) というようなデータを抽出するSQLはどのように記述したら良いのでしょうか? ・・・・売上テーブル・・・ 売上番号 品名 単価 101   りんご 100 102   りんご 100 103   みかん 150 104   りんご 100 105   みかん 150 106   メロン 250 postgre8.3のためrow_numberが使えません

  • アクセスの2つのテーブルから重複しないものを抜き出す方法について

    アクセスの2つのテーブルから重複しないものを抜き出す方法について 例えば テーブル Aには ID   価格    商品   1  200    りんご   2  150    みかん   3  180    りんご   4  230    いちご テーブル Bには   1  150    みかん   2  180    りんご とあった場合 A-B のクエリーを実行して   1  200    りんご   2  230    いちご という結果を得たいのですが、どのようにすれば出来るのでしょうか よろしくお願いします。