Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Join - Fatal编程技术网

连接多个MySQL语句

连接多个MySQL语句,mysql,join,Mysql,Join,我执行了多个查询,希望将它们合并在一起 第一个查询将用户提供的路径转换为id。路径可以有多个与其关联的id,因此我希望确保获取该路径最近创建的id: 从路径中选择id,其中路径=$path ORDER BY created DESC LIMIT 1 一旦我知道了id号,我就可以执行其余的查询 我有最近创建的路径id,但我还需要验证我有最近创建的该id的路径(有时它们不相同): 从路径中选择路径,其中id={id}按创建的DESC LIMIT 1排序 我希望包括id的评级和计票,尽管有时没有: 选

我执行了多个查询,希望将它们合并在一起

第一个查询将用户提供的路径转换为id。路径可以有多个与其关联的id,因此我希望确保获取该路径最近创建的id:

从路径中选择id,其中路径=$path ORDER BY created DESC LIMIT 1

一旦我知道了id号,我就可以执行其余的查询

我有最近创建的路径id,但我还需要验证我有最近创建的该id的路径(有时它们不相同):

从路径中选择路径,其中id={id}按创建的DESC LIMIT 1排序

我希望包括id的评级和计票,尽管有时没有:

选择AVG(投票)作为评级,COUNT(*)作为投票计数,其中id={id}按id分组

最后,我想包括第三个表中关于id的所有内容(此表中的id是唯一的,因此不能有多行):

从id={id}的位置选择*


如何最好地将这些语句连接在一起?

您可以将它们连接到一个查询中,如下所示:

select pl.*, avg(vote) as rating
from (SELECT path, id
      FROM paths
      WHERE path = {path}
      ORDER BY created DESC
      LIMIT 1
     ) p left outer join
     votes v
     on v.id = p.id left outer join
     places pl
     on pl.id = p.id
group by p.id;
编辑:

前两个条件似乎是多余的。但是,如果您需要它们:

select pl.*, avg(vote) as rating
from (SELECT path, id
      FROM paths
      WHERE id = (select id from paths where path = {path} order by created desc limit 1)
      ORDER BY created DESC
      LIMIT 1
     ) p left outer join
     votes v
     on v.id = p.id left outer join
     places pl
     on pl.id = p.id
group by p.id;

谢谢Gordon,但它不包括id的最新路径(第二个查询)。我知道这似乎是多余的,但它确实做了一个重要的检查:可能已经为id创建了一个新路径,但用户可能正在使用旧路径进行查询,在这种情况下,需要发生一些特殊情况。@gordon,你确定
place
的id等于
path
的id吗?我个人认为变量名称相同,但值不同。@Sebas。OP似乎只获得一次
id
,然后多次使用它。@Gordon,在运行上述代码时,即使选择了路径和id,它们也不会实际输出,投票表上的行计数也不会。