php - 连接mysql中的三个表有奇怪的要求

标签 php mysql

我的数据库中有三个表。

表 A 具有字段

KEYID | KeyName
27    | Income
28    | Account Number

表 B 包含字段

UserID | Email          | Name | Phone
481    | test@gmail.com | test | 99999999

表 C 具有字段

ID | KEYID | UserID | Value
1  |   27  |   481  | 10,000

我需要显示的表字段标题是:

UserID | Email          | Name |   Phone  | Income

表值应如下所示:

 481   | test@gmail.com | test | 99999999 | 10,000

我可以获得应显示在表中的KeyID。在此示例中,KeyIDs 字符串为 '27' 。我尝试加入,我可以获取并显示表中的值。但我不知道如何将键名称显示为表头。

有什么想法吗?

最佳答案

您可以使用一对内连接

select b.UserID, b.Email , b.Name, c.value as income 
from   tableB as b inner join tableC as C on b.userID = c.userId
inner join tableA as a on a.keyID = c.keyID 
and a.keyname = 'Income';     

以及您在评论中提供的查询

select 
      b.UserID
    , b.Email 
    , b.Name
    , Group_Concat(Distinct Concat(c.keyID,’^:^’,c.value) 
                          Order By c.id Separator ‘;’) As Keyvalues 
    from tableB as b 
    inner join tableC as C on b.userID = c.userId 
    inner join tableA as a on a.keyID = c.keyID;  

并且使用 CASE 应该是

 select 
      b.UserID
    , b.Email 
    , b.Name
    , Group_Concat(Distinct CASE 
            WHEN c.keyID IN ('1,23,10') THEN Concat(c.keyID,’^:^’,c.value) END  
            Order By c.id Separator ‘;’) As Keyvalues 
    from tableB as b 
    inner join tableC as C on b.userID = c.userId 
    inner join tableA as a on a.keyID = c.keyID; 

关于php - 连接mysql中的三个表有奇怪的要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38456605/

相关文章:

mysql - 简单的 SQL 查询需要很长时间

php - Zend Framework 2 中的无效参数控制台错误

php - SimpleXML 解析嵌套命名空间 - PHP

php - 多对多关系 MYSQL - 根据用户输入选择数据,例如症状

连接到复制的 mysql 数据库的 Java 应用程序

MySQL ALTER 表多列键

Javascript:使用 1 个函数但不同的值设置多个字段的值

php - 不要添加名称重复的条目

php - 在 Symfony 中使用注解注入(inject)依赖

MySQL - 嵌套where条件