Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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_Group By_Inner Join - Fatal编程技术网

Mysql 固定的;每个派生表都必须有自己的别名;现在获取列不需要';不存在错误

Mysql 固定的;每个派生表都必须有自己的别名;现在获取列不需要';不存在错误,mysql,group-by,inner-join,Mysql,Group By,Inner Join,我正在努力使这个查询工作。对不起,我是mysql新手 $sql = "SELECT * FROM mutamba_posts INNER JOIN ( SELECT aluno_id FROM mutamba_amigos GROUP BY aluno_id) ON mutamba_amigos.aluno_id = mutamba_posts.post_aluno_id WHERE mutamba_amigos.amizade_id IN

我正在努力使这个查询工作。对不起,我是mysql新手

$sql = "SELECT * FROM mutamba_posts 
        INNER JOIN ( SELECT aluno_id FROM mutamba_amigos GROUP BY aluno_id) 
        ON mutamba_amigos.aluno_id  = mutamba_posts.post_aluno_id 
        WHERE mutamba_amigos.amizade_id IN (SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}')
        ORDER BY mutamba_posts.post_date DESC LIMIT {$start}, {$limit}"; 
获取错误:
每个派生表都必须有自己的别名

我把它改成:

   $sql = "SELECT * FROM mutamba_posts 
           INNER JOIN ( SELECT aluno_id  AS aluno_id, amizade_id as amizade_id FROM mutamba_amigos GROUP BY aluno_id) 
           aluno_id ON mutamba_amigos.aluno_id  = mutamba_posts.post_aluno_id 
           WHERE mutamba_amigos.amizade_id IN (SELECT amizade_id AS amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}')
           ORDER BY mutamba_posts.post_date DESC LIMIT {$start}, {$limit}"; 
现在我得到了错误:“在'in/ALL/ANY子查询'中的未知列'mutamba_amigos.amizade_id'”


有什么帮助吗?

您需要为子查询中的每个临时表指定一个别名

SELECT * 
FROM mutamba_posts 
INNER JOIN 
(
   SELECT aluno_id 
   FROM mutamba_amigos
   WHERE mutamba_amigos.amizade_id IN 
   (
      SELECT amizade_id FROM mutamba_amigos WHERE aluno_id = '{$myid}'
   )
   GROUP BY aluno_id
) mutamba_amigos ON mutamba_amigos.aluno_id  = mutamba_posts.post_aluno_id     
ORDER BY mutamba_posts.post_date DESC 
LIMIT {$start}, {$limit}

在第一个内部联接子查询中,您分配了一个别名“aluno_id”,我想这不是您的意思。我认为你的查询结构将简化为

SELECT
      mp.* 
   FROM 
      mutamba_posts mp
         JOIN mutamba_amigos ma
            ON mp.post_aluno_id = ma.aluno_id
   WHERE
      mp.post_aluno_id = '{$myid}'
   ORDER BY 
      mp.post_date DESC 
   LIMIT {$start}, {$limit}
总之,您的查询是从POSTS表开始的,然后通过“aluno_id”查找AMIGOS表以获得AMIZADE_id。但是,然后您使用AMIZADE_id返回AMIGOS表,通过它的“aluno_id”。因此,您似乎正在寻找由“aluno_id”人员提供的任何帖子,该人员按日期排序(desc)。看起来您对记录进行了双重限定,以返回原始的基础“aluno_id”值


将来,对于这样的事情,您应该尝试发布每个的一些示例数据,并显示您想要得到的示例。查询中各个列的简单(甚至是缩写)表结构以及列之间带有空格作为制表符的数据都不起作用。

您需要为子查询提供别名…可能是因为别名。感谢您的快速回复,但我仍然在“in/ALL/ANY subquery”中获得“未知列”mutanba_amigos.amizade_id”在内部查询中添加了
where
子句