- 締切済み
SQL 重複しないJoinの仕方を教えてください
データが重複しないSQL文の書き方を教えてください。 下記のような2つのテーブルがあり、「管理番号」でOnして「使用数」をJoinさせ、かつ重複しないようにSQLを作成したいのですが、MySQLで可能でしょうか? ※0002に関しては、テーブル2の方がデータ数が多いため、Join後は2行になって「使用数」は重複せず、「数」の部分には0が入ればベストです 【テーブル1】 日付 品番 管理番号 数 2012/6/12 A987 0001 500 2012/6/14 A987 0001 300 2012/6/16 A987 0001 400 2012/6/18 A987 0001 800 2012/6/12 A987 0002 750 2012/6/12 A987 0003 540 2012/6/14 A987 0003 740 2012/6/16 A987 0003 840 2012/6/18 A987 0003 240 2012/6/20 A987 0003 640 【テーブル2】 日付 品番 管理番号 使用数 2012/7/10 A987 0001 160 2012/7/11 A987 0001 260 2012/7/10 A987 0002 220 2012/7/12 A987 0002 320 2012/7/20 A987 0003 530 2012/7/22 A987 0003 430 2012/7/24 A987 0003 830 【テーブルJoin】 日付 品番 管理番号 数 使用数 2012/6/12 A987 0001 500 160 2012/6/14 A987 0001 300 260 2012/6/16 A987 0001 400 0 2012/6/18 A987 0001 800 0 2012/6/12 A987 0002 750 220 2012/6/12 A987 0002 0 320 2012/6/12 A987 0003 540 530 2012/6/14 A987 0003 740 430 2012/6/16 A987 0003 840 830 2012/6/18 A987 0003 240 0 2012/6/20 A987 0003 640 0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
関連するQ&A
- SQL LEFT JOIN
SQLでわからないことがあるので質問させていただきます。 例えばの話ですが在庫テーブルというテーブルがあってそこに商品マスタ をLEFT JOINする際に SELECT * FROM 在庫テーブル LEFT JOIN 商品マスタ ON 品番 = 品番 として実行すると返ってくる結果は在庫テーブルの全レコードと 品番で結んだ商品マスタに存在するデータってことですか? 上記のSQLと SELECT * FROM 在庫テーブル で返ってくるレコード件数が違うという時はどういう可能性が考えられるでしょうか? ちなみに商品マスタの品番レコードはすべてユニークになっていて 色やサイズで品番が複数存在するものではありません。 何回やってもレコード件数が前者のほうが多くなってしまいます。 分かる方がいらしたらぜひ教えていただきたいです。
- ベストアンサー
- Oracle
- inner joinについて
SQLのデータ抽出方法についてお教え下さい。 TABLE_2をdistinctで重複を無くして、TABLE_1とinner joinさせたいです。 select distinct TABLE_2.id と select TABLE_1.ID from TABLE_1 inner join distinct TABLE_2.ID といったようなことをやりたいです。 TABLE_1 ID 001 001 002 002 002 TABLE_2 ID 001 001 002 002 002 環境はMYSQL5.5になります。よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
- 重複せずに取り出すはSQLでできますか?
アクセス2010です。 テーブルA AB AC DB GR から データの先頭文字だけを重複せずに取り出すには? テーブルB A D G 現在 rs.MoveNextでループを使い1個ずつ同じのがあるか、ないかで取り出していますが、SQL文1行だけで可能でしょうか?
- ベストアンサー
- その他(データベース)
- 重複項目を取得するSQL分
SQL分でわからないことがあるので質問させてください。 Aというテーブルに、 番号と処理通番(ユニーク)の2つカラムがあります。 Aテーブルから重複した番号とその処理通番を 上から4件まで取得したいのですが、 ----------------------------- SELECT A.番号,A.処理通番 FROM A INNER JOIN (SELECT 番号 FROM A GROUP BY 番号 HAVING COUNT(*) > 1) AS B ON (A.番号 = B.番号) ORDER BY A.番号,A.処理通番 ----------------------------- のSQLでは重複した番号のデータを 全て取得してしまいます。 番号別に4件まで取得したいのですが、 どのようなSQLを書けば取得できますか? よろしくお願いします。
- ベストアンサー
- SQL Server
- 効率の良いSQL文の書き方を教えてください
MySQLで開発をしています。 1回のSQLで、下記テーブルの内容を日付・ユーザ番号毎(日付・ユーザ番号が同じ時に同じレコード)に、 型番1個数、 型番2個数、 その他が2か3で型番2・品番1個数、 その他が2か3で型番2・品番1個数、 その他が2か3で型番2・品番1での売上小計、 その他が2か3で型番2・品番2個数での売上小計、 売上合計、 以上の各カラムを持つテーブルに再編して返したいのですが、 効率の良いやり方がわかりません。 どなたかよろしくお願いします。 テーブル ユーザ番号 日付 型番 品番 売上 その他 ----- --- --- --- --- --- 001 3/10 1 2 500 1 001 3/10 2 1 0 1 003 3/11 2 1 100 2 004 3/12 1 1 100 2 005 3/12 2 2 0 2 001 3/13 1 2 500 1 003 3/13 2 1 100 2 003 3/13 2 1 0 3 002 3/14 1 1 100 3 005 3/15 2 2 0 1
- 締切済み
- MySQL
- 重複しないデータの抽出について
MYSQL5.0.77で DBをつくり テーブル1のAフィールドのデータから テーブル2のAフィールドのデータ、 テーブル3のAフィールドのデータ、 テーブル3のAフィールドのデータ、 のいずれにも重複しないデータのみ 抽出したいと思っています。 どのようなSQL文を書けばよいでしょうか? じぶんでいろいろ試しましたがどうしても出来ません。 どなたかご教授願います。
- ベストアンサー
- MySQL
- SQL(初心者です) 3つのテーブルを結合
下のような3つのテーブルを結合したいのですが SQL1つで可能でしょうか? 条件は 1.品種機械テーブルを読み込みます。 品種でユニークしますが使用日付を降順にならべ変えます。品種機械テーブルから使用日付がMAXのものの行データをすべて取得(下の場合:A 4 20051204・・)ほかはいりません。 2.品種テーブル読み込む。 1で取得した品種と一致する行データをすべて取得 3.機械テーブルを読み込む 2で取得した機械と一致する行データをすべて取得 うまい方法がおもいつかないのでアドバイスや 参考になりそうなホームページなどありましたら教えていただけないでしょうか? 宜しくお願いします。 --------------------------------------------- (1)品種テーブル(品種を管理) 品種 ・・・etc A B C D --------------------------------------------- (2)機械テーブル(機械を管理) マシン ・・・etc 1 2 3 4 ------------------------------------------ (3)品種機械テーブル(品種と機械を管理) 品種 | マシン | 使用日付 |・・・etc A | 1 | 20051201 A | 2 | 20051202 A | 3 | 20051203 A | 4 | 20051204
- ベストアンサー
- その他(データベース)
- inner joinでサブクエリ
SQLについてお教え頂けませんでしょうか? 在庫テーブル ・ID ・数量 データ 001,1 001,3 002,3 002,2 002,4 003,2 商品テーブル ・ID データ 001 002 003 004 やりたいこと: 在庫テーブルには重複しているIDがあります。 商品テーブルには重複しているIDはありません。 在庫テーブルの重複を削除したIDと商品テーブルのIDをinner joinで結びたいと思います。 ・select distinct ID FROM 在庫テーブル ・select ID FROM 商品テーブル この2つのjoin方法がわかりません。 結果として、 001 002 003 を取得したいいです。宜しくお願いします。 ちなみに select ID from 商品テーブル inner join 在庫テーブル 商品テーブル.ID = exists(select distinct ID from 在庫テーブル) というコードを書きましたが、動きませんでした・・・抽出データが0件でした・・・
- ベストアンサー
- その他(データベース)
- ACCESS2007で、重複チェックSQL文改編
ACCESS2007で、重複チェックのSQL文の改編方法について教えてください。 ●フィールド内容=|会社名|郵便番号|住所|電話番号|業種| テーブル1とテーブル2を比較して、この内、|電話番号|が (1)両テーブルに存在する= SELECT テーブル1.* FROM テーブル1 INNER JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号; (2)テーブル1のみに存在する= SELECT テーブル1.* FROM テーブル1 LEFT JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号 WHERE (((テーブル2.電話番号) Is Null)); (3)テーブル2のみに存在する= SELECT テーブル2.* FROM テーブル1 RIGHT JOIN テーブル2 ON テーブル1.電話番号=テーブル2.電話番号 WHERE (((テーブル1.電話番号) Is Null)); 場合のSQL文が上記なのですが、この条件を |会社名|と|電話番号|の両方が一致する時(1a)(2a)(3a) と |会社名|と|電話番号|のどちらか一つが一致する時(1b)(2b)(3b) にソース改変するにはどうしたら良いでしょうか?(AND、ORを使うのだと思いますが、具体的配置位置が分かりません。。) PS1:この程度の事ならSQL文を書かずとも、ウィザードで処理できるのでしょうか? PS2:テーブル名が、[テーブル]とカッコ有る無し両パターン見ますが、どちらが正解なのでしょうか? PS3:SQL文内は、ワード間は、半角スペースに統一されているんでしょうか?それともスペース無しでもエラーは出ないんでしょうか?
- ベストアンサー
- その他MS Office製品
- SQLで、重複レコードを削除
no type name ---------------------------- 1 1 peach 1 1 peach 2 5 tomato 4 6 apple 4 6 apple 1 1 peach 上記のように、重複するレコード(行)が存在してしまっているテーブルで、重複をなくす処理を、SQLで簡単に行なうにはどうしたら良いでしょうか。MySQLです。上の例では、下のように更新したいのです。よろしくお願いします。 no type name ---------------------------- 1 1 peach 2 5 tomato 4 6 apple
- ベストアンサー
- MySQL
- スキャナーを使ってもパソコンに画像が送られない。ファイヤーウォールのレベルの問題のようなことが書いてある。ノートン360を開いてもどこをどうしていいか分かりません。
- MFC-J6983CDWを使用している際、スキャナー画像がパソコンで受け取れないトラブルが発生しています。ファイヤーウォールの設定に問題があるようで、特にノートン360の設定に問題があるようです。
- 質問者はMFC-J6983CDWを使用しており、スキャナーを使ってもパソコンに画像が送られない問題に直面しています。ファイヤーウォールのレベルの問題が原因であり、ノートン360の設定方法が分からない状況です。