mysql两表查询的问题。

图片描述
图片描述
图片描述

那么问题来了,工资是属于敏感和金钱组的,为啥这样不出来呢,语句如下。和上图一样~

select f.field_name,g.group_name from dmp_field as f,dmp_field_group
 as g where f.group_id=g.id;

如果各位大神觉得我描述不清楚,我想要的结果
图片描述

已经解决
ps:最后还是加个关联表吧,多对多。。
感谢各位~

select f.field_name,f.id,f.is_system,(select group_concat(g.group_name) from dmp_field_group as g where find_in_set (g.id,f.group_id)) as group_name from dmp_field as f 【where true】

图片描述

再加两张图片:FIND_IN_SETGROUP_CONCAT

足够多表关联了~还有,一定要大写啊。刚刚被老大骂了~
图片描述

图片描述

阅读 3.6k
5 个回答
SELECT f.field_name,(SELECT GROUP_CONCAT(g.group_name)  FROM dmp_field_group as g WHERE find_in_set(g.id,f.group_id)) AS group_name FROM dmp_field AS f

一定要写可以类似与这样子写,不过一般确实会有个中间表记录对应关系!

数据库的设计有问题呀。虽然我是也不很懂。但是一般多对多的关系肯定不止2个数据表。
通常会把关系用单独的表来存放。
楼主。你的情况我不太清楚。但我通常不会这样去做。我把你的数据库多添加了一个表。
我是这样做的。
图片描述

select f.*, group_concat(g.name)
from f, fg, g
where f.id = fg.fid and fg.gid = g.id
group by f.fname;

下面是结果。我明天刚好要用。所有顺手用sqlite做了个实验。

图片描述

group 中的 id 并没有为 ”53,54“ 的值

f.group_id=g.id 是不是应该用in 看到有逗号分隔两个id 我只是猜的!!

我之前写过一篇文章的。
大概是自己定义一个函数。
文章链接: http://segmentfault.com/a/1190000002731999

SELECT f.`field_name` AS `字段名称`,
    getGroupNames(f.`group_id`) AS `分组`
FROM dmp_field f
WHERE f.`group_id` IS NOT NULL
推荐问题
宣传栏