• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:一致したデータ同士を文字列で繋げるには?)

SQLで一致したデータを繋げる方法は?

このQ&Aのポイント
  • SQLで一致したデータの項目同同士を繋げることは可能ですか?実際にはSQL文で出たデータを各配列にそれぞれデータに入れて使うため、そのようにつなげることができるかどうか知りたいです。
  • SQLで一致したデータの項目同同士を繋げることはできますか?具体的には、同じIDの名前をカンマやスラッシュなどの区切り文字でつなげて表示する方法を知りたいです。
  • SQLで一致したデータの項目同同士を繋げる方法を教えてください。SQL文で出たデータを各配列に入れて使うため、結果に対して項目を区切り文字でつなげる方法が知りたいです。

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

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

こうしてみてください SELECT ID,GROUP_CONCAT(名前 SEPARATOR ',') FROM テーブル GROUP BY ID HAVING ID IN (SELECT ID FROM テーブル WHERE name='SQL')

phpjava
質問者

お礼

回答ありがとうございます。 教えて頂いたやり方で上手く行きました。

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

その他の回答 (1)

回答No.1

SELECT ID,GROUP_CONCAT(名前 SEPARATOR ',') FROM テーブル名 GROUP BY ID ORDER BY 1 です。

phpjava
質問者

お礼

早速の回答ありがとうございます。 ちょっと、頂いた方法で試してみます。

phpjava
質問者

補足

上記質問については頂いた方法でできました。 合わせて質問なんですが、 今回WHEREで絞ったあとに結合したものだと思いますが、絞る前に結合してからWHERE条件で絞ることってできるものでしょうか? 今ならWHEREで名前がSQLが入ったもので調べたら ID   名前 ------------ A1 SQL と表示されますが、できるものなら ID   名前 ------------ A1 SQL,My で出力したいんですが。

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

関連するQ&A

  • AccessのSQL 部分一致したデータの更新

    以下の様な2つのテーブルが有った場合、[商品テーブルA]と[商品テーブルB] の商品名フィールド同士の商品名が部分一致した場合、 [商品テーブルB]のIDフィールドに[商品テーブルA]のIDフィールドのID番号を 付与したいと考えております。 この様な場合のSQL文を教えて頂けませんでしょうか。 [商品テーブルA] ID  商品名 ------------- 1  A1AAAA 2  A1AAAB 3  A1AABB 4  A1ABBB 5  A1BBBB [商品テーブルB] ID  商品名 -------------    AAAB    AAAA    BBBB    AABB    ABBB SQLの結果として[商品テーブルB]が以下の様に更新される結果を期待しています。 【結果】 [商品テーブルB] ID  商品名 ------------- 2  AAAB 1  AAAA 5  BBBB 3  AABB 4  ABBB 商品名が完全一致する場合であれば、update inner join on set を使えば上手くいのですが、 部分一致の場合どの様にすれば良いのか、行き詰っています。 以上、宜しくお願い致します。

  • SQLで複数データベースの一致比較する方法

    SQL文のみを用いて値の検索結果を元にまた検索を行い、さらにその結果をもとに検索結果の中身を参照して比較する方法を探しています。 例として、データベース内に図のような4つのテーブルがあるとします。 地域情報Aと都道府県名A、地域情報Bと都道府県名Bはセットと考えます。 地域情報には、地域ごとに対応する番号があり、都道府県名には地域情報の番号と、それに対応した件名が記述してあります。 (例えば、東北は001番で、001番(東北)には青森・岩手が存在する、と読みます) このようなデータベースがあるとき、入力として「中部」「北陸」があったとします。 すると、1つ目の入力(中部)は地域情報Aからその番号を探し,その番号を元に都道府県名Aから県名を探します。 同様にして、2つ目の入力(北陸)もBのテーブルから値を検索します。 すると、1つ目の入力に対して「愛知・福井」、2つ目の入力に対しては「福井・石川」が出力されます。 最後に、1つ目の出力結果と2つ目の出力結果を比較して、同じ都道府県名が含まれていれば 1 を、含まれていなければ -1 を出力します。 ここではどちらも「福井」が含まれているので、最終的な出力結果は「1」になります。 ということをやりたいと思っています。 現在、C言語で、2つの出力結果(県名)をそれぞれ配列に格納して、2つの配列の中身を比較、for文とstrcmpで配列に一致する県名があるかを確認、ということをしていますが、 入力に応じてSQL問い合わせが4回と配列の中身の一致比較のためにfor文を2重に回しているため、実行速度が遅いのが気になります。 これをC言語を使わず、SQL文のみで完成させるには、どういったSQL文を書けば良いのでしょうか? また、実際に実行するとして、データ検索にSQL・一致比較にC言語を使う場合、全てSQLのみで実行する場合 ではどちらが処理時間が短くなるのでしょうか? ただし、実際は地域情報A・Bにはレコードが1000件以上、都道府県名A・Bには各地域ごとにレコードが5件程度あることを想定しています。 今回は例のためこのような書き方になっていますが、実際に扱うデータに文字列はなく、すべて数値データです。 長文になってしまいましたが、対応の仕方を知りたいと思っています。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 条件に一致した塩基配列を含むデータを抽出するには?

    条件に一致した塩基配列を含むデータの抽出方法を教えて下さい。(perl) 下記のように、塩基配列(ACTTC…)と、その上に配列名(>id_000)が 数百万配列ならんだデータがあります。 (fasta形式) >id_001 CGCTGCCGGGGAACGGTCTGGTCAGGGATCTATCATGAGG CGTGGGAATTTCGCCCCGGACAGTGAGGATTTGGGTGCTT CCTTTGCTGTGATTTTAAGTTACCTCACCAAA >id_002 GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG AGAGATCTTGCTTAGTTACTACTGC >id_003  ・  ・ この中から、指定した塩基配列(例:TGAAGTGCA)を含むデータを、 下記のように別名のファイルに、配列名と塩基配列を一緒に出力したいのですが、 どのようにすればよいかが、分からず困っています。 >id_002 GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG AGAGATCTTGCTTAGTTACTACTGC >id_015 ATGTGAAGTGCAGTGTGTTAGT  ・  ・ 「BioPerl」のSeqIOオブジェクト?を使用することで、 何とか同じ結果を出せるようにはなったのですが、 実際に、どのような処理がされているのかは、理解できていません。 今後、色々なパターンに活用できるよう、perlだけの記述では どのような記述をすればよいのか、理解したいのです。 perl初心者なので、より基本的な記述だと助かります。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • C#でアクセスからデータを抽出できません。

    アクセスのデータを部分一致の検索で抽出しようとしていますが、結果が0件になってしまいます。 作成したSQL文は以下のように作成しております。 string selectcommand = string.empty; string testid = "1"; selectcommand = string.Format("select * from TastTable where ID like '*{0}*'", testid); ・アクセスを開いて、結果が0件になるSQL文を直接入力して実行すると正しい結果が返ってきます。  (IDに1が含まれている行が全てヒットします。) ・上記SQL文の「'*{0}*'」を「'{0}'」とすると、ちゃんとIDが1の人のみヒットするので、*がいけない?  でもアクセスに直接SQL文を打ち込むと正しい結果が返ってくるのは何故でしょう・・・ 基本的な質問でしたら申し訳御座いませんが、宜しくお願い致します。

  • データの検索の為に列を増やすのは正しいのか

    現在mySQLの勉強中です。 テーブルtableにidとnameとunixtimeが格納されています。 登録件数30000件。idは、登録申請時に順に割り振られています。 unixtimeはnameに対応する人間の登録確定時を表したものです。 したがって、idとunixtimeの順番は必ずしも一致しません このデータから、PHPを使って登録確定日別でid、nameのリストをhtmlで作成したいと思います。 たとえば20001224.htmlには2000年12月24日に登録確定した人のリストが入っているようにしたいです。 このような出力を効率的に行うために、unixtimeからyearとmonthとdateを作成しました。データ型はすべてintです。 あるデータのunixtimeが2011/12/31の場合、yearは2011、monthは12、dateは31となります。 htmlを作成するにあたり、データベースからデータを出力しなければいけません。そのため、 まずdateが条件に一致するデータを抽出して配列にidとmonthとyearを格納し、 次にmonthが条件に一致するものを抽出して配列にidとyearに格納し、 最後にyearが一致するデータのidを抽出し、idに該当するデータをechoしようと考えています。 が、この方法は正しいのでしょうか。 SQLは検索にいろいろテクニックが必要で、方法を誤ると途端に検索速度が速くなったり遅くなったりすると聞きました。 列を増やすことで、メモリの使用量が増えて検索が遅くなったり、もしかしたらunixtimeで上手に検索する方法があるのかもしれないと思います。 どなたかこういう時はどういう検索を行うのが正しいのか、ご教示ください。 どうかよろしくお願いします。

    • ベストアンサー
    • MySQL
  • ACCES「抽出条件でデータ型が一致しません」

    環境 WindowsXP Access2003 SELECT A.ID, A.NAME, A.DATE FROM ( (SELECT ID, NAME, DATE FROM ・・・) A LEFT JOIN (SELECT ID, NAME, DATE FROM ・・・) B ON A.ID = B.ID ) ORDER BY A.ID こんな感じのSQLを実行すると、 「抽出条件でデータ型が一致しません」 というエラーとなります。 SQL文を以下の様に変更すると、エラーにはなりません。 1.「ORDER BY A.ID」排除 2.ORDER句を「A.ID」以外の「A.NAME」「A.DATE」「B.ID」「B.NAME」「B.DATE」に変更 3.ON句の順番を「ON B.ID = A.ID」に入れ替え(ORDER句は、「A.ID」のまま) なぜ、このようなエラーになるのでしょうか? 特に3が理解不能なのですが、 ON句の順番がORDER句に影響を及ぼすことがあるのでしょうか? 以上、よろしくお願いします。

  • スペースの入った文字列の呼び方

    データベースから全てのデータをSQLで取り出し、 それを一度、HASHにいれてから配列で取り出そうと思っているのですが、 データベースに"姓'半角スペース'名"(例、山田 太郎)のようにはいっている 名前データを配列を使って呼び出すと、姓(例、山田)までしか表示されません。 説明が分かりにくいかもしれませんが困っています。 よろしくお願いします。

  • 配列内のデータを1つのテーブルに登録。

    配列内のデータを1つのテーブルに登録。 お世話になっております。 以下のような構成のテーブルがあり、カラム名1、2、3、4と100まであるのですが、そこへ 配列内にある100を数えるデータを登録するには、どのようなSQL文が適切なのでしょうか? no id date 1 2 3 4 5 6 ...... 100 安易に、$sql = "INSERT INTO test values(0, '$id', '$date', '$randam[0]', '$randam[1]', '$randam[2]',....とも考えたのですが、他に効率のいいものがあるのでは?と思い、投稿した次第です。色々と考えてはいるのですが他に思いつかないので・・ 補足:配列にあるデータはランダムな数値を格納してあり、このSQL文の前に、配列を生成したものとなっております。 以上、お忙しいなか恐縮ですがご指導のほど宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 【Access】部分一致で不一致データを抽出したい

    クエリで2つのテーブルから、不一致データを抽出したいのですが、 完全一致だけでなく部分一致のデータも一致データとして取り除きたいです。 [テーブルA]フィールド1 000-0001 000-0001A 000-0002 000-0003 000-0004 [テーブルB]フィールド2 000-0001 000-0002 というようなデータで、結果は [結果] 000-0003 000-0004 というふうにしたいです。 (000-0001だけでなく000-0001Aというデータも取り除きたいのです。) Access初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。

  • 特定の文字列が含まれているか調べる

    すいません、先ほど「条件が複雑なSQL文」の質問を立てさせてもらったのですが、 あとから自分で考えてもおかしな(どうやっていいのか分からないというか・・・) 部分がありましたので、今回はそれよりは簡潔(?^^;))な内容の質問なのですが、 例えば、「abcd」という文字列が、あるテーブルのnameに含まれてるかを調べたいとします。 そしてマッチした割合やあと何文字でマッチするか?のデータも欲しいのです。 この場合のSQL文はどのように記述すれば良いのでしょうか? 【調べる文字列】 abcd [tbl] id  name 1   ab 2   abcd 3   abcdefgh 4   xyz 【得たい結果(マッチした割合%の降順)】 [tblのid] [nameにマッチした割合%(パーセント)] [nameにあと何文字でマッチするか?]   2          100                        0   3           50                        4

    • ベストアンサー
    • MySQL