【问题标题】:Get specific data from MYSQL using PHP使用 PHP 从 MYSQL 获取特定数据
【发布时间】:2021-06-16 07:52:06
【问题描述】:

我有两个表如下
用户表

user_id name
1 zia
2 john
3 raza

主题表

data_id user_id subject
1 1 Math
2 1 Chem
3 1 Bio
4 2 Math
5 2 Phy

当我查询数据时,我得到如下结果:

 [
{
    "user_id": "1",
    "name": "zia",
    "subject": [
        "Math",
        "Chem",
        "Bio"
    ]
},
{
    "user_id": "2",
    "name": "john",
    "subject": [
        "Math",
        "Phy"
    ]
},

]

我的查询如下

SELECT
users.user_id,
users.name,
GROUP_CONCAT(subjects.subject) sub
FROM
  `users`
  INNER JOIN subjects ON users.user_id = subjects.user_id
  GROUP BY
  subjects.user_id;

但实际上我想通过以下方式获取数据:

上面显示的结果是这样的,如果用户表中的条目在主题表中没有对应的条目,那么我们的结果中必须有用户名和用户 ID,如下所示

 [
{
    "user_id": "1",
    "name": "zia",
    "subject": [
        "Math",
        "Chem",
        "Bio"
    ]
},
{
    "user_id": "2",
    "name": "john",
    "subject": [
        "Math",
        "Phy"
    ]
},
{
    "user_id": "3",
    "name": "Raza",
    
}

]

如您所见,我们的数据方式是,如果用户表中的所有输入项与主题表中的主题输入项匹配,则它们会与主题输入项一起显示,否则每个用户表输入项都将显示没有任何影响。

*请帮我解决这个问题**

【问题讨论】:

  • 您可能需要使用 LEFT JOIN 而不是 INNER JOIN,因为您也想检索没有主题的用户
  • 我会把它作为解决方案发布
  • 这里是演示-sqlfiddle.com/#!9/65d80c/4

标签: mysql


【解决方案1】:

您可能需要使用 LEFT JOIN 而不是 INNER JOIN,因为您也想检索没有主题的用户

【讨论】:

    猜你喜欢
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2020-09-12
    • 2012-01-22
    • 2016-09-22
    • 1970-01-01
    相关资源
    最近更新 更多