我正在使用GROUP_CONCAT()显示多个类别,但没有得到确切的结果。对于表联接,我正在使用IN()子句,请为此提供帮助。
查询仅显示一个类别。在数据库类别ID存储中,例如2,5,8
$sql = "SELECT u.*, GROUP_CONCAT(c.name SEPARATOR ',') as cname, s.name as sname
FROM course u
INNER JOIN category c ON c.id IN (u.category_id)
INNER JOIN status s ON s.id = u.status_id
WHERE u.is_deleted = 0 AND u.id = $id $app
LIMIT 1";
我想要类别表中的多个类别。
答案 0 :(得分:0)
group_concat是一个聚合函数,当您还需要未聚集的列时,为了正确使用这些函数,需要GROUP BY子句和用于聚合级别的列名
SELECT GROUP_CONCAT(c.name SEPARATOR ',') as cname, s.name as sname
FROM course u
INNER JOIN category c ON c.id IN (u.category_id)
INNER JOIN status s ON s.id = u.status_id
WHERE u.is_deleted = 0 AND u.id = $id $app
GROUP BY s.name
ORDER BY s.name
LIMIT 1;
答案 1 :(得分:0)
我使用分组方式和排序方式,但对我不起作用。
如果我通过“ 2,6,8”代替IN()中的u.category_id,则认为“ INNER JOIN类别c ON c.id IN(u.category_id)”行中存在问题。 / p>
请看一下。
答案 2 :(得分:0)
在第一个代码中,如果我在IN()子句中使用自定义ID对我来说工作正常
$ sql =“ SELECT u。*,GROUP_CONCAT(c.name SEPARATOR'
')作为cname,s.name作为sname
从课程开始
内部联接类别c ON c.id IN(3,1,9)
INNER JOIN状态s ON s.id = u.status_id
其中u.is_deleted = 0和u.id = $ id $ app
LIMIT 1“;
如果我在IN()子句查询中使用“ u.category_id”,则仅检索一个类别
$ sql =“ SELECT u。*,GROUP_CONCAT(c.name SEPARATOR'
')作为cname,s.name作为sname
从课程开始
INNER JOIN类别c ON c.id IN(u.category_id)
INNER JOIN状态s ON s.id = u.status_id
其中u.is_deleted = 0和u.id = $ id $ app
LIMIT 1“;
我想在查询中使用IN(u.category_id)子句来检索正确的结果。