Tôi đã tìm kiếm rất nhiều nhưng không tìm thấy giải pháp phù hợp cho vấn đề của mình.SQL GROUP_CONCAT được chia thành các cột khác nhau
Tôi muốn làm gì?
Tôi có 2 bảng trong MySQL: - Country - ngoại tệ (Tôi tham gia cùng họ với nhau thông qua CountryCurrency -> do nhiều mối quan hệ)
Xem này cho một ví dụ làm việc: http://sqlfiddle.com/#!2/317d3/8/0
Tôi muốn liên kết cả hai bảng với nhau bằng cách tham gia, nhưng tôi muốn chỉ hiển thị một hàng cho mỗi quốc gia (một số quốc gia có nhiều loại tiền tệ, vì vậy đó là vấn đề đầu tiên).
tôi thấy chức năng 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
này có kết quả sau:
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
Nhưng những gì tôi muốn bây giờ là để phân chia các loại tiền tệ trong các cột khác nhau (tiền tệ 1, tiền tệ 2, ...). Tôi đã thử các chức năng như MAKE_SET() nhưng điều này không hoạt động.
SQL không hỗ trợ số lượng cột động. Bạn sẽ phải làm điều đó trong ứng dụng. – Vatev
Bạn có thể sử dụng logic trong một con trỏ để làm điều này. Nhưng con trỏ đầu tiên sẽ phải xem xét bao nhiêu cột dữ liệu mà tập kết quả của bạn cần. Tự động tạo một bảng tạm thời để được điền và sau đó được chọn. Một số cột động lực là vấn đề với thử thách này. –