Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使MySQL“在”搜索返回所有相关行_Mysql_Database_Search_Join - Fatal编程技术网

使MySQL“在”搜索返回所有相关行

使MySQL“在”搜索返回所有相关行,mysql,database,search,join,Mysql,Database,Search,Join,我必须在三个表中使用mysql执行查询 interface --------------------- |id | name | --------------------- |1 | inter1 | --------------------- |2 | inter2 | --------------------- inetrapp -------------------------------------- |id | inter

我必须在三个表中使用mysql执行查询

interface
---------------------
|id   |    name     |
---------------------
|1    |    inter1   | 
---------------------
|2    |    inter2   |
---------------------

inetrapp
--------------------------------------
|id   |    interid     |   appid     |
--------------------------------------
|1    |     1          |    20       |
--------------------------------------
|2    |     1          |    21       |
--------------------------------------
|3    |     2          |    22       |
--------------------------------------
|4    |     2          |    23       |
--------------------------------------

app
--------------------------------------
id    |   appid        |  appname    |
--------------------------------------
1     |     20         |    sap      |
--------------------------------------
2     |     21         |    sap1     |
--------------------------------------
3     |      22        |    wes      |
--------------------------------------
4     |      23        |    wes1     |
--------------------------------------
问题是这样的

 select  ti.id as id,  
    ti.name as name,
    GROUP_CONCAT(DISTINCT tapp.appname order by ti.id SEPARATOR ",") as applications
    from  interface ti inner join interapp tiap on ti.id = tiap.interid inner join app   as   tapp on tiap.appid = tapp.appid where tapp.appname in ("sap1");
这给了我以下的结果

--------------------------------------
|id   |    name     |   applications |
--------------------------------------
|1    |    inter1   |     sap1       |
--------------------------------------
但是我需要所有与inter1相关的应用程序,也就是说,我希望得到以下结果

--------------------------------------
|id   |    name     |   applications |
--------------------------------------
|1    |    inter1   |     sap,sap1   |
--------------------------------------
请指导我修正我的上述问题。先谢谢你

SELECT  a.id,
        a.name,
        GROUP_CONCAT(DISTINCT c.appname ORDER BY a.id SEPARATOR ',') result
FROM    interface a
        INNER JOIN inetrapp b
            ON a.id = b.interid
        INNER JOIN app c
            ON b.appid = c.appid
        INNER JOIN
        (
            SELECT  DISTINCT a.interid     
            FROM    inetrapp a
                    INNER JOIN app b
                        ON a.appid = b.appid
            WHERE   b.appname IN ('sap1')
        ) d ON  a.id = d.interid
GROUP   By a.id, a.name

非常感谢你。工作正常。谢谢你们让我对数据库有了深刻的了解。