Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多表连接问题_Mysql_Sql_Join - Fatal编程技术网

Mysql 多表连接问题

Mysql 多表连接问题,mysql,sql,join,Mysql,Sql,Join,首先,你应该知道我在SQL方面做得很差劲 我的问题是: 我有4个表需要连接(用于SphinxSearch),以下是大致结构: 账户 类别 帐户有子类别 子类别 我想要的是一个如下所示的结果集: accounts.id | accounts.name | category_name | subcategories ----------------------------------------------------------- 1 Test Res

首先,你应该知道我在SQL方面做得很差劲

我的问题是:

我有4个表需要连接(用于SphinxSearch),以下是大致结构:

账户 类别 帐户有子类别 子类别 我想要的是一个如下所示的结果集:

accounts.id | accounts.name | category_name | subcategories
-----------------------------------------------------------
1             Test            Restaurants     Chinese, Delivery
2             Foo             Store           Sportswear
SELECT a.id, a.name, c.name as category, group_concat(subcat.name) as subcategories
FROM accounts AS a
JOIN (account_has_subcategory AS ahs, subcategory AS subcat)
ON (a.id = ahs.account_id AND ahs.subcat_id = subcat.id),
accounts AS a2
JOIN category AS c
ON a2.category = c.id
对,我的查询如下所示:

accounts.id | accounts.name | category_name | subcategories
-----------------------------------------------------------
1             Test            Restaurants     Chinese, Delivery
2             Foo             Store           Sportswear
SELECT a.id, a.name, c.name as category, group_concat(subcat.name) as subcategories
FROM accounts AS a
JOIN (account_has_subcategory AS ahs, subcategory AS subcat)
ON (a.id = ahs.account_id AND ahs.subcat_id = subcat.id),
accounts AS a2
JOIN category AS c
ON a2.category = c.id
就像前面所说的,我对SQL一窍不通(只要它涉及到多个连接或类似的东西,基本上…)。如果有人能给我指出正确的方向或提供一个解决方案(有基本的解释,这样我就可以试着把它记在脑子里--),那将是我的一天,因为我已经和这个问题斗争了5个小时了

谢谢。

试试这个

SELECT a.id, a.name, 
       c.name as category, 
       group_concat(subcat.name) as subcategories
FROM accounts AS a
INNER JOIN account_has_subcategory AS ahs ON a.id = ahs.account_id
INNER JOIN subcategory AS subcat ON subcat.id = ahs.subcat_id
INNER JOIN category AS c ON a.category = c.id
GROUP BY a.id, a.name, c.name
ORDER BY a.id;
试试这个

SELECT a.id, a.name, 
       c.name as category, 
       group_concat(subcat.name) as subcategories
FROM accounts AS a
INNER JOIN account_has_subcategory AS ahs ON a.id = ahs.account_id
INNER JOIN subcategory AS subcat ON subcat.id = ahs.subcat_id
INNER JOIN category AS c ON a.category = c.id
GROUP BY a.id, a.name, c.name
ORDER BY a.id;

您就快到了-您只需要稍微修改一下语法并添加一个groupby

select a.id, a.name, c.name as category, group_concat(subcat.name) as subcategories
from accounts as a
inner join category as c on a.category = c.id
inner join accounts_has_subcategory as ahs on a.id = ahs.account_id
inner join subcategory as subcat on ahs.subcat_id = subcat.id
group by a.id, a.name, c.name

你几乎到了——你只需要稍微修改一下语法,然后按添加一个组

select a.id, a.name, c.name as category, group_concat(subcat.name) as subcategories
from accounts as a
inner join category as c on a.category = c.id
inner join accounts_has_subcategory as ahs on a.id = ahs.account_id
inner join subcategory as subcat on ahs.subcat_id = subcat.id
group by a.id, a.name, c.name
非常感谢,这很有效。(必须等待7分钟才能批准你的答案)非常感谢,这很有效。(必须等待7分钟才能批准您的答案)