首頁  >  問答  >  主體

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

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

迷茫迷茫2718 天前327

全部回覆(5)我來回復

  • 黄舟

    黄舟2017-04-17 13:09:50

    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
    

    一定要寫可以類似與這樣子寫,不過一般確實會有個中間表記錄對應關係!

    回覆
    0
  • 阿神

    阿神2017-04-17 13:09:50

    資料庫的設計有問題呀。雖然我是也不很懂。但一般多對多的關係肯定不只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做了個實驗。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-17 13:09:50

    group 中的 id 並沒有為 」53,54“ 的值

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:09:50

    f.group_id=g.id 是不是應該用in 看到有逗號分隔兩個id 我只是猜的! !

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 13:09:50

    我之前寫過一篇文章的。
    大概是自己定義一個函數。
    文章連結: 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
    

    回覆
    0
  • 取消回覆