私はたくさん検索しましたが、私の問題に対する適切な解決策が見つかりませんでした。
私は何をしたいですか?
MySQL に 2 つのテーブルがあります: - Country - Currency (CountryCurrency を介して結合します --> 多対多の関係のため)
実際の例については、http ://sqlfiddle.com/#!2/317d3/8/0 を参照してください。
結合を使用して両方のテーブルをリンクしたいのですが、国ごとに 1 つの行だけを表示したい (国によっては複数の通貨があるため、それが最初の問題でした)。
group_concat 関数を見つけました:
SELECT country.Name, country.ISOCode_2, group_concat(currency.name) AS currency
FROM country
INNER JOIN countryCurrency ON country.country_id = countryCurrency.country_id
INNER JOIN currency ON currency.currency_id = countryCurrency.currency_id
GROUP BY country.name
これにより、次の結果が得られます。
NAME ISOCODE_2 CURRENCY
Afghanistan AF Afghani
Åland Islands AX Euro
Albania AL Lek
Algeria DZ Algerian Dinar
American Samoa AS US Dollar,Kwanza,East Caribbean Dollar
しかし、私が今欲しいのは、通貨を異なる列 (通貨 1、通貨 2、...) に分割することです。私はすでに MAKE_SET() のような関数を試しましたが、これはうまくいきません。