2

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

1) 名前

ID名 | 名前
-------------
1 | ヴォルク
2 | モルク
3 | 卵黄

2) 会社

ID会社| 会社
------------------
1 | ルセルス
2 | 巨大な

3) name_company は、name (表 1) および 2 つの外部キーと多対 1 の関係にあります。

IDname_company | ID名 | ID会社
1 | 1 | 1
2 | 2 | 1
3 | 2 | 2

これを与えるクエリが必要です:

IDresult | 名前 | 会社
--------------------------------------
1 | ヴォルク | ルセルス
2 | モルク | ルセルラス、モンスターラス
3 | 卵黄 |

どうすればいいですか?私は SQLite を使用していますが、後で Firebird に切り替える予定です。

4

2 に答える 2

0

複数の文字列からコンマ区切りの文字列を取得するには、group_concat関数を使用します。文字列は、サブクエリで返されたすべてのレコードからのものです。

SELECT IDname AS IDresult,
       Name,
       (SELECT group_concat(Company)
        FROM company
        WHERE IDcompany IN (SELECT IDcompany
                            FROM name_company
                            WHERE IDname = name.IDname))
FROM name

またはで定義されたグループ内のすべてのレコードからGROUP BY:

SELECT name.IDname AS IDresult,
       name.Name,
       group_concat(company.Company)
FROM name
LEFT JOIN name_company ON name.IDname            = name_company.IDname
LEFT JOIN company      ON name_company.IDcompany = company.IDcompany
GROUP BY name.IDname
于 2013-10-02T18:31:18.383 に答える
0

SQLite は group_concat() 文字列集計関数をサポートしています。次のようなクエリでの使用については、 http: //www.sqlite.org/lang_aggfunc.html を参照してください。

select id, group_concat(<string_column>)
from <table>
group by id;

独自のクエリに置き換える必要があります。

于 2013-10-02T18:08:07.953 に答える