別のテーブルの値のリストから値を取得するためのMysqlクエリ

anishroniyar

アイテムのアクションIDリストをコンマ区切り形式で格納するテーブルがあり、MySQLクエリを使用してIDからコンマ区切り形式の説明リストを取得したいと思います。

私は2つのテーブルを持っています:

table1: action_master                         table2: object_action

id   action                                   items      actions_id_list
-------------                                 ---------------------------
1    talk                                     Human      1,2,4
2    walk                                     Dog        3
3    bark                                     Fish       4,5
4    eat
5    swim

ここで、次のように出力を生成できるselectクエリを記述します。

items      actions_desc_list
-----------------------------
Human      talk,walk,eat
Dog        bark
Fish       eat,swim

注:アクションの説明リストをobject_actionテーブルに直接保存するオプションはありません。IDを使用する必要があります。

カミル・ゴシミンスキー

状況の一般的な考慮事項

カンマ区切りのリストを値として列に格納しないでください。これにより、データベースの通常のフォームが壊れます。あなたはnormalizationプロセスについて考える必要があります現在問題が発生している理由は、最初にコンマ区切りのリストがこのように設計されているためです。FOREIGN KEYここにも制約を作成する適切な方法がないことに注意してください。

解決

とはいえ、スキーマの再設計を実行できない可能性が高いため(可能であれば、少なくとも将来の問題を回避できる人に通知してください)FIND_IN_SET、MySQL関数をJOIN条件として使用し、次にGROUP_CONCAT結果を使用できます。

FIND_IN_SET(f1, f2)f1文字列内のf2文字列の位置を返します。の状態に> 0するとTRUEf1存在する場合に戻りますf2

あなたの場合:

  • f1 == action_master.id
  • f2 == object_action.actions_id_list

サンプルデータ

create table action_master( id int, action varchar(10));
create table object_action (items varchar(10), actions_id_list varchar(15));

insert into action_master values (1,'talk'), (2,'walk'), (3,'bark'), (4,'eat'), (5,'swim');
insert into object_action values ('Human','1,2,4'),('Dog','3'),('Fish','4,5');

結果を生成するためのクエリ

select 
    oa.items
  , group_concat(am.action order by am.id) as actions_desc_list
from object_action oa
inner join action_master am on
  find_in_set(am.id, oa.actions_id_list) > 0
group by oa.items

LIVEDEMOを見る

結果

items   actions_desc_list
-------------------------
Dog     bark
Fish    eat,swim
Human   talk,walk,eat

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数のテーブルから値を取得するためのクエリ

分類Dev

set ステートメントが別のテーブルから値を取得するクエリの更新

分類Dev

子テーブルから最新の値を取得するためのMySQLクエリ

分類Dev

同じテーブルから値と子の値を取得するためのOracleループクエリ

分類Dev

別のテーブルから列名を取得するためのSQLクエリ

分類Dev

複数のテーブルから値を取得するための1つのクエリ

分類Dev

2つのテーブルから値の合計を取得するためのクエリ

分類Dev

テーブルから特定の値を取得するためのサブクエリ

分類Dev

別のテーブルの文字列列にない、特定の日時値未満の1つのテーブルの値を取得するためのクエリ

分類Dev

1つのテーブルから個別の値を選択し、別のテーブルからすべての値を選択するMySQLクエリ

分類Dev

参照されるテーブルから値を取得するためのSQLクエリ

分類Dev

SQL スクリプトの最適化: 別のテーブルから範囲値を取得する

分類Dev

MySQL-別のテーブルからのGROUP BYを使用して、クエリ内の1つのテーブルから値の関連リストを取得する

分類Dev

リストから任意の値を含むアイテムを取得するためのLINQクエリ?

分類Dev

別のテーブルの列のようなテキストを持つ1つのテーブルから列を選択するためのクエリ

分類Dev

SQL-このクエリに参加するために別のテーブルから列を取得する

分類Dev

クエリリストを選択するためのSQLテーブルの列の値

分類Dev

クエリのOUTPUT部分の 'from'テーブルから値を取得する方法

分類Dev

別のテーブルからのアイテムの量をカウントするための別のクエリ内のクエリ

分類Dev

別のテーブルの結合クエリからの結果値をカウントする方法は?

分類Dev

すべての行のリスト値の取得(別のテーブルからのIDのリスト)

分類Dev

2つのテーブルを結合するクエリから個別のカウントを取得するための最良の方法

分類Dev

クエリでdistinctから別のテーブルに値を挿入する

分類Dev

特定の属性の集計値を識別するためのテーブル間でのSQLクエリ

分類Dev

別の列から値を取得するためのMySQLCreateトリガー

分類Dev

列の値に従って参照テーブルからデータを抽出するためのクエリ

分類Dev

SQL Server:VIEWとして別のテーブルからテーブルデータ(カウント)を取得するためのクエリ

分類Dev

レコードのサブストリングを取得し、欠落していないか別のテーブルと比較するためのMSAccessクエリ

分類Dev

Rのリスト列名から値のテーブルを取得する

Related 関連記事

  1. 1

    複数のテーブルから値を取得するためのクエリ

  2. 2

    set ステートメントが別のテーブルから値を取得するクエリの更新

  3. 3

    子テーブルから最新の値を取得するためのMySQLクエリ

  4. 4

    同じテーブルから値と子の値を取得するためのOracleループクエリ

  5. 5

    別のテーブルから列名を取得するためのSQLクエリ

  6. 6

    複数のテーブルから値を取得するための1つのクエリ

  7. 7

    2つのテーブルから値の合計を取得するためのクエリ

  8. 8

    テーブルから特定の値を取得するためのサブクエリ

  9. 9

    別のテーブルの文字列列にない、特定の日時値未満の1つのテーブルの値を取得するためのクエリ

  10. 10

    1つのテーブルから個別の値を選択し、別のテーブルからすべての値を選択するMySQLクエリ

  11. 11

    参照されるテーブルから値を取得するためのSQLクエリ

  12. 12

    SQL スクリプトの最適化: 別のテーブルから範囲値を取得する

  13. 13

    MySQL-別のテーブルからのGROUP BYを使用して、クエリ内の1つのテーブルから値の関連リストを取得する

  14. 14

    リストから任意の値を含むアイテムを取得するためのLINQクエリ?

  15. 15

    別のテーブルの列のようなテキストを持つ1つのテーブルから列を選択するためのクエリ

  16. 16

    SQL-このクエリに参加するために別のテーブルから列を取得する

  17. 17

    クエリリストを選択するためのSQLテーブルの列の値

  18. 18

    クエリのOUTPUT部分の 'from'テーブルから値を取得する方法

  19. 19

    別のテーブルからのアイテムの量をカウントするための別のクエリ内のクエリ

  20. 20

    別のテーブルの結合クエリからの結果値をカウントする方法は?

  21. 21

    すべての行のリスト値の取得(別のテーブルからのIDのリスト)

  22. 22

    2つのテーブルを結合するクエリから個別のカウントを取得するための最良の方法

  23. 23

    クエリでdistinctから別のテーブルに値を挿入する

  24. 24

    特定の属性の集計値を識別するためのテーブル間でのSQLクエリ

  25. 25

    別の列から値を取得するためのMySQLCreateトリガー

  26. 26

    列の値に従って参照テーブルからデータを抽出するためのクエリ

  27. 27

    SQL Server:VIEWとして別のテーブルからテーブルデータ(カウント)を取得するためのクエリ

  28. 28

    レコードのサブストリングを取得し、欠落していないか別のテーブルと比較するためのMSAccessクエリ

  29. 29

    Rのリスト列名から値のテーブルを取得する

ホットタグ

アーカイブ