【问题标题】:Left join mysql multi table id and display the name in JSON左加入mysql多表id并以JSON显示名称
【发布时间】:2015-04-30 04:22:29
【问题描述】:

我是angularjsjson 的新成员。我想从一个表(表 A)中显示属性 name 来自 id,该表与包含表 A 中的 id 的其他表(表 B)有关系。

这是表 A:

---------------------
id_skill | name_skill
---------------------
1        | medical record
2        | rontgen
3        | thorax
---------------------

和表 B:

----------------------------------------
id_client | name_client | skill_client
----------------------------------------
1         | john        | 1,2
2         | smith       | 3
----------------------------------------

我想回显/显示表 B 中的数据,但在 skill_client 列中包含表 A 中的 id(s)。我想用 json 方法和 PHP 中的表 A 中的 name_skill 显示该列.

这样我就可以像这样在我的页面中获取数据:

------------------------
Name       |    Skills
------------------------
John       | medical record, rontgen
Smith      | thorax
------------------------

你能帮帮我吗?

【问题讨论】:

    标签: php mysql json angularjs


    【解决方案1】:

    您应该真正改变表结构并规范化您的数据库。最好的办法是创建一个新表来存储id_clientid_skill,并从第二个表中删除逗号分隔的数据。但是,在您的情况下,您可以尝试以下方式

    select 
    b.name_client, 
    group_concat(a.name_skill) as skills 
    from tableb b 
    left join tablea a on find_in_set(a.id_skill,b.skill_client) > 0 
    group by b.id_client ; 
    

    【讨论】:

    • 是的,我想我应该规范化我的数据库,我必须创建一个存储 id_client 和 id_skill 的新表。感谢您的回答
    • 对了,你能解释一下如何加入三个表(查询),以便我可以在我的客户页面中获取 name_skill 吗? @Abhik Chakraborty
    • 也许添加一个包含所有细节的新问题。答案很简单。
    • 好吧。我想获取表 B(客户端数据),以便我可以获取名称和技能,但在技能列中我想回显 name_skill 而不是 id_skill 并用逗号分隔,在 PHP 中内爆。你能解释一下吗?
    • 如果您有第三张表,正如我解释的那样,查询将是 select b.name_client,group_concat(a.name_skill) as skills from tablec c join tablea a on a.id_skill = c.id_skill join table b on b.id_client = c.id_client group by b.id_client
    【解决方案2】:

    使用explode(',', $myString);

    $myArray = explode(',', $myString);
    

    这会从一个字符串中得到一个字符串数组。

    如果字符串是:“医疗记录,rontgen” 然后你得到一个长度为 2 的数组:

    $myArray[0]= "病历"

    $myArray[1]= "rontgen"

    然后您使用 json_encode($yourData) 将 vars u 对象转换为 json 字符串。

    【讨论】:

    • 感谢您的回答,但我想我必须创建一个新表,这对我来说太复杂了,因为我是 json 和 angularjs 的新手,但还是谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 2017-09-27
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多