我搜索了很多,但没有找到解决问题的正确方法.
我想做什么?
MySQL中有2个表: - Country - Currency(我通过CountryCurrency将它们连接在一起 - >由于多对多关系)
请参阅此示例以获取一个工作示例:http://sqlfiddle.com/#!2/317d3/8/0
我想使用连接将两个表链接在一起,但我希望每个国家只显示一行(某些国家/地区有多种货币,因此这是第一个问题).
我找到了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
Run Code Online (Sandbox Code Playgroud)
这有以下结果:
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
Run Code Online (Sandbox Code Playgroud)
但我现在想要的是将货币分成不同的列(货币1,货币2,......).我已经尝试过像MAKE_SET()这样的函数,但这不起作用.
我正在使用这个简单的代码将数据库查询结果转换为JSON格式:
$result = $mysqli->query("
SELECT
date as a
, sum(sales) as b
, product as c
FROM
default_dataset
GROUP BY
date
, product
ORDER BY
date
");
$data = $result->fetch_all(MYSQLI_ASSOC);
echo stripslashes(json_encode($data));
Run Code Online (Sandbox Code Playgroud)
问题是如果此查询返回的数据中存在双引号(例如,在产品列中).json_encode函数不会以良好的JSON格式对数据进行编码.
有人可以帮我如何转义查询返回的双引号?谢谢.