• 締切済み

my sql について

こんにちは。 my sql 初心者です。 データをcsv形式でエクスポートする際に問題があり質問です。 商品管理番号 サイズ カラー A S ブルー A M イエロー B S ブルー B M イエロー B L レッド C S ブルー C M ホワイト というデータがあったとします。 ※上記はデータの一部です。実際はもっと文字数もサイズカラーも多いです。 このデータを使ってビューを作成します。 -------------------------------------------------------------------------------- CREATE VIEW item_v_tab AS SELECT id, CONCAT('size:',サイズ,'#','color:',カラー,'=',商品管理番号,'&')AS subcode, 商品管理番号 FROM zaiko; -------------------------------------------------------------------------------- この時にデータ型はmediumtextとなります。 次に、 -------------------------------------------------------------------------------- SELECT id, 商品管理番号, group_concat(distinct subcode order by subcode ASC separator '\n') as subcode FROM item_v_tab group by 商品管理番号; -------------------------------------------------------------------------------- で商品管理番号をグループ化します。 そしてcsvでエクスポートすると subcodeの一部、サイズカラーが多いもので文字数が切れてしまいます。 データ型を変更すれば切れずにすべて出力できるのかな? と考えて調べていたのですが、方法がわかりません。 お分かりになる方お教えいただけないでしょうか。 以上よろしくお願い致します。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

ごめんなさい、うまく読み取れないのですが SELECTで表示する分には切れずに表示され、CSVにすると途中で切れるということですか? またセパレータを改行以外の文字でやっても結果はおなじでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのフィルタオプションの検索条件について

    ■受注データ.xls Sheet1    A      B     C     D 1  商品番号  カラー   サイズ  商品コード 2  123     白     M 3  123-A    BLK     S 4       ・ 5       ・  6       ・ ■商品マスタ.csv Sheet1    A      B     C     D 1  商品番号  カラー   サイズ  商品コード 2  123     白     M    AAA 3  123-A    BLK     S    AAB 4       ・ 5       ・  6       ・ 上記の受注データ.xlsの「商品コード」に、商品マスタ.csvの 「商品コード」を転記したいです。 ※「商品コード」は、「商品番号」「カラー」「サイズ」が同じ  場合のみ一致します。 CSVデータが30万件以上あるため、 商品コードが合致するデータのみ別シート、もしくは別ブックに データを抽出する形で行おうと思い、フィルタオプションを使用したいです。 この場合検索条件の数式をどのように指定すればいいでしょうか。 何卒よろしくお願いいたします。

  • SQLを教えてください

    お世話になります。 商品マスタと商品カラーマスタと商品サイズマスタがあります。 商品マスタの一覧を出したいのですが、 商品に付随しているカラーやサイズも一緒に表示したいのです。 商品マスタ(商品ID・商品名) 商品カラーマスタ(商品カラーマスタID・商品ID・カラーID) 商品サイズマスタ(商品サイズID・商品ID・サイズID) カラーマスタ(カラーID・カラー名) サイズマスタ(サイズID・サイズ) という構成です。 商品カラー、商品サイズは商品に対して複数あります。 表示したい一覧は 商品ID・商品名・カラー・サイズ で 商品1つに対して1行で表し カラー列、サイズ列は「赤・黒・茶」「S・M・L」というように 書きたいのです。 SQLでズバッと取得する方法はありますか? 1行1行、商品ごとに カラー・サイズをループしなくてはいけないのでしょうか? 教えてください。 よろしくお願いします。

  • 2ファイルを使用し商品単位のサイズ展開を抽出したい

    お世話になります。 2つのcsvファイルがあります。 それらを使ってデータを作りだしたいと思っています。 CSVファイル1 A列/ B列 /C列 空白/商品番号/空白 CSVファイル2 A列/ B列 / C列 / F列 /H列 空白/商品番号/タイプ/サイズ/カラー ファイル1と2はB列の商品番号で紐づいていますが ファイル1が親データであるのに対し、 ファイル2はサイズ展開分行数があります。 やりたいことはファイル1の商品番号単位で、 紐づくファイル2のサイズ展開をファイル1のC列にセットしたいです。 データは以下のようにセットされています。 CSVファイル1 A列/ B列 /C列   /0001/     /0002/     /0003/     /0004/     /0005/   CSVファイル2 A列/ B列 /C列 / F列 /H列   /0001/i  /50cm /     /0001/s  /   /     /0001/s  /   /     /0002/i  /60cm /     /0002/i  /70cm /     /0002/s  /   /     /0002/s  /   /     /0003/i  /80cm /     /0003/i  /90cm /     /0003/i  /100cm /     /0003/s  /   /     /0003/s  /   /     /0004/i  /50cm /     /0004/i  /60cm /     /0004/s  /   /     /0004/s  /   /     /0005/i  /90cm /ブルー   /0005/i  /90cm /レッド   /0005/i  /100cm /ブルー   /0005/i  /100cm /レッド   /0005/s  /   /   /0005/s  /   / このとき、以下のように抽出されてほしいです。 CSVファイル1 A列/ B列 /C列   /0001/△50cm     /0002/△60cm△70cm     /0003/△80cm△90cm△100cm   /0004/△50cm△60cm   /0005/△90cm△100cm ※どの商品番号もタイプがsのものが2行あるのですが、 これはサイズ展開に関係ないので無視したいです。 ※タイプがiのものがサイズ展開を司っているので対象です。 ※0005のように、同じ商品番号にカラーが2種類ある場合は その分行が増えるのでサイズ展開としては90cmと100cmしかないのですが、 それが重複して表現されてしまいます。 カラーが複数種類ある商品データは多いので可能な限り 重複は抽出の時点で除きたいです。 ファイル1の親データの時点で1000商品ほどあるため 手作業で確認していくのは厳しく、 お知恵拝借出来たらと考えております。 どうぞ宜しくお願いいたします。

  • SQLの作成の仕方

    SQLを学びだしたばかりの初心者です。 皆様のお知恵を貸して下さい。 商品 サイズ 金額 AAA S     100 AAA M     200 BBB S     300 CCC M     200 ↑このように登録されたDBがあるとします。 これから下記のような表を作りたいのですが 上手くSQLが書けません。 (追加)            商品 サイズ 金額 最小サイズ AAA S     100    S AAA M     200    S BBB S     300    S CCC M     200    M MIN関数とGROUP BYを使ってやればいいと思うのですが・・。 どうか宜しくお願いします。

  • このCSVを加工してからアクセスに取り込むべきか、アクセス上で加工できるか教えてください

    あるショッピングカートで出力されるCSVが下記のようになっており、 発送作業に使うために加工が必要と思っております。 【元のCSV】 受注日時、商品番号1数量1サイズ1商品番号2数量2サイズ2・・・、金額 2010/3/28 8:50,<>2S000001:5:::,6500 2010/3/29 9:52,<>1S000004:1::S:<>1S000002:3::L:,13700 2010/3/30 16:25,<>1S000003:1:::<>1S000002:3::L:<>2S000001:1:::,27700 【加工後のCSV】 受注日時、金額、商品番号1、数量1、サイズ1、商品番号2、数量2、サイズ2、・・・ 2010/3/28 8:50,6500,2S000001,5, 2010/3/29 9:52,13700,1S000004,1,S,1S000002,3,L 2010/3/30 16:25,27700,1S000003,1,,1S000002,3,L,2S000001,1, 元のCSVでは全ての商品番号、数量、サイズが1組のコンマの中に収められてしまっているのが問題なんです。 1レコードの商品数は、1回の買い物で何種類の商品を購入するか分からなく、 限度を決められないので、延々と増えてもいいように末尾に置くしかないかと。 本当は元のCSVをアクセスのテーブルにリンクさせ、クエリーで一発解決したいのですが、 無理であれば一旦CSVを正規表現で加工してから、アクセスに取り込もうかと思っています。 アクセス内で解決する方法か、CSV上で一次加工するアドバイスをお願いします。

  • group_concatを複数列に設定する

    こんにちは group_concatを複数列に設定すると、グルーピングした結果が1行に繰り返し表示されてしまいます。 どのように解決すればよろしいのでしょうか? 例)カラムCOL1が主キーのテーブル MAIN_TABLE ----------- COL1| AAAA| SUB_TABLE1 ----------- COL1|VALUE AAAA|111111 AAAA|222222 SUB_TABLE2 ----------- COL1|VALUE AAAA|xxxxxxx AAAA|yyyyyy 上記のテーブルを下記のSQLで連結 SELECT M..COL1 ,group_concat(S1.VALUE,'/') AS GS1 ,group_concat(S2.VALUE,'/') AS GS2 FROM MAIN_TABLE AS M LEFT OUTER JOIN SUB_TABLE1 AS S1 ON M.COL1=S1.COL1 LEFT OUTER JOIN SUB_TABLE2 AS S2 ON M.COL1=S2.COL1 GROUP BY M.COL1 抽出結果が COL1|GS1 | GS2 ------------------------------------------------------------- AAAA|111111/222222/111111/222222|xxxxxxx/yyyyyy/xxxxxxx/yyyyyy と表示されてしまいます。カラムGS1とCS2に表示されているグループの繰り返しを削除し、 抽出結果を COL1|GS1 | GS2 --------------------------------- AAAA|111111/222222|xxxxxxx/yyyyyy にするにはどうすればよいのでしょうか?

    • ベストアンサー
    • MySQL
  • SQLで表の結合

    下記の結果になるような構文教えてください。 表1 商品CD カラーCD サイズCD c101 102 501 x201 101 502 d102 103 502 表2 商品CD 商品名 x201 Windows7 d102 Mac c101 Android 表3 CD 名称 101 黄 102 赤 103 緑 501 S 502 M 503 L 欲しい結果 商品CD 商品名  カラーCD 名称 サイズCD 名称 x201 Windows7 102 赤 501 S d102 Mac    101 黄 502 M c101 Android  103 緑 502 M いろいろJOINしてみたのですが、表1と表3を2回参照してエラーが出ちゃいます。 どうぞよろしくお願いします。 使用環境 MySql

    • ベストアンサー
    • MySQL
  • このぐるぐるSQLクエリまとまりますか?

    ピボット集計の理解が難しくて難儀してます このような予定表を作るのですが毎月ごとに集計してやるのに 4回問い合わせております。一回でえいやっと投げるにはどう記述しましょう? mysql 5.0です -- 今月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW(), '%Y%m') group by 商品番号; -- 来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 1 MONTH, '%Y%m') group by 商品番号; -- 再来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 2 MONTH, '%Y%m') group by 商品番号; -- ささらい月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 3 MONTH, '%Y%m') group by 商品番号;

  • エクセルのフィルタオプションについて

    エクセルのフィルタオプションを使用して、以下のことを行いたいです。 可能でしょうか?可能な場合、方法を教えていただけると助かります。 【やりたいこと】 商品マスタ.csvにある「商品コード」を、受注データ一覧.xlsに転記したい。 【条件】 ・商品マスタ.csv   マスタには、「商品コード」「商品番号」「カラー」「色」が含まれています。 ・受注データ一覧.xls  受注データには、「商品番号」「カラー」「色」のデータはありますが、  「商品コード」がありません。   ※受注データの「商品番号」「カラー」「色」がマスタのデータと一致する場合のみ  「商品コード」を転記したいです。 CSVファイルのデータが30万件以上あるため、間違いがないようどうしても 手作業ですることを防ぎたいです。 急ぎの作業のため、何卒お力を貸してください。 よろしくお願いいたします。

  • エクセルデータ検索方法を教えてください!

    エクセルで下記のような検索をしたいと思っています。 VBAの知識がないので、関数で行いたいです。 Sheet1   G     H    I     J 1 商品番号 カラー  サイズ  コード 123    白    M     Sheet2   A     B    C     D 1 商品番号 カラー  サイズ  コード   123    白    M     aaa 上記のようにシートが分かれています。 Sheet1の「商品番号」「カラー」「サイズ」と、Sheet2の「商品番号」「カラー」「サイズ」 が対応しており、3つの条件すべてに合致するSheet2の「コード」を、Sheet1の「コード」に 表示させたいです。 データが膨大にあるのですが、大変急ぎの作業のため、どうぞよろしくお願いします。