Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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/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
Php 具有并集和限制的mysql查询多表_Php_Mysql - Fatal编程技术网

Php 具有并集和限制的mysql查询多表

Php 具有并集和限制的mysql查询多表,php,mysql,Php,Mysql,我需要解决一个问题,但不知道如何解决。实际上,问题是这样的 (SELECT qrliststgo.ordenser,qrliststgo.razon,qrliststgo.emision,qrliststgo.despacho,hitos.fecha FROM `qrliststgo`,`hitos` WHERE `qrliststgo`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrliststgo`.`sigla` AND `hitos`.`gu

我需要解决一个问题,但不知道如何解决。实际上,问题是这样的

(SELECT qrliststgo.ordenser,qrliststgo.razon,qrliststgo.emision,qrliststgo.despacho,hitos.fecha FROM `qrliststgo`,`hitos` WHERE `qrliststgo`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrliststgo`.`sigla` AND `hitos`.`guia`=`qrliststgo`.`guia`) UNION (SELECT qrlistvalpo.ordenser,qrlistvalpo.razon,qrlistvalpo.emision,qrlistvalpo.despacho,hitos.fecha FROM `qrlistvalpo`,`hitos` WHERE `tipotransporte`='I' AND `hitos`.`idplace`=`qrlistvalpo`.`sigla` AND `hitos`.`guia`=`qrlistvalpo`.`guia`) UNION (SELECT qrlistsananto.ordenser,qrlistsananto.razon,qrlistsananto.emision,qrlistsananto.despacho,hitos.fecha FROM `qrlistsananto`,`hitos` WHERE `qrlistsananto`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrlistsananto`.`sigla` AND `hitos`.`guia`=`qrlistsananto`.`guia`) UNION (SELECT qrlistlocalstgo.ordenser,qrlistlocalstgo.razon,qrlistlocalstgo.emision,qrlistlocalstgo.despacho,hitos.fecha FROM `qrlistlocalstgo`,`hitos` WHERE `qrlistlocalstgo`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrlistlocalstgo`.`sigla` AND `hitos`.`guia`=`qrlistlocalstgo`.`guia`) UNION (SELECT qrlistlocalvalpo.ordenser,qrlistlocalvalpo.razon,qrlistlocalvalpo.emision,qrlistlocalvalpo.despacho,hitos.fecha FROM `qrlistlocalvalpo`,`hitos` WHERE `qrlistlocalvalpo`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrlistlocalvalpo`.`sigla` AND `hitos`.`guia`=`qrlistlocalvalpo`.`guia`) UNION (SELECT qrlistlocalsananto.ordenser,qrlistlocalsananto.razon,qrlistlocalsananto.emision,qrlistlocalsananto.despacho,hitos.fecha FROM `qrlistlocalsananto`,`hitos` WHERE `qrlistlocalsananto`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrlistlocalsananto`.`sigla` AND `hitos`.`guia`=`qrlistlocalsananto`.`guia`)
是的,我知道它很长,基本上,我需要从qrliststgo中找到所有与2列hitos匹配的行

(SELECT qrliststgo.ordenser,qrliststgo.razon,qrliststgo.emision,qrliststgo.despacho,hitos.fecha FROM `qrliststgo`,`hitos` WHERE `qrliststgo`.`tipotransporte`='I' AND `hitos`.`idplace`=`qrliststgo`.`sigla` AND `hitos`.`guia`=`qrliststgo`.`guia`)
然后再次使用UNION对另一个名为qrlistvalpo和hitos的表执行相同的操作

我的问题是,在hitos中,有3行匹配,一行来自qrliststgo,所以它被复制。。。3行具有相同的信息,但最后一行发生了更改,因为它在hitos中找到3个结果

我怎么做

我需要一个php的excell导出这个

更新:

我需要的是显示qrlist中的所有行,其中hitos中至少有一行qrlist.sigla=hitos.idplace和qrlist.guia=hitos.guia

如果hitos中有多个结果匹配,则显示第一个结果并跳过其他结果,然后从qrlist中检查另一个结果


不知道我的解释是否正确

看看下面是否给出了你想要的:

      (SELECT ordenser, razon, emision, despacho, fecha FROM qrliststgo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistvalpo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistsananto
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalstgo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalvalpo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalsananto
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos));

看看下面是否给出了您的目标:

      (SELECT ordenser, razon, emision, despacho, fecha FROM qrliststgo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistvalpo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistsananto
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalstgo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalvalpo
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos))
UNION (SELECT ordenser, razon, emision, despacho, fecha FROM qrlistlocalsananto
       WHERE (sigla, guia) IN (SELECT DISTINCT idplace, guia FROM hitos));

查看左JOIN是的,我从qrlistlocalstgo中选择了*左JOIN hitos在qrlistlocalstgo.sigla=hitos.idplace和qrlistlocalstgo.guia=hitos.`guia`,结果是16行,13“hitos”列的数据为空,3行的qrlist部分的数据相同,hitos列的数据不同,因为我有3行与guia的qrlist上的guia和sigla以及hitos上的idplace匹配。查看左关节是的,我做了,我从qrlistlocalstgo中选择*左键在qrlistlocalstgo.sigla=hitos.idplace和qrlistlocalstgo.guia=hitos.guia``上加入hitos,结果是16行,13“hitos”列上的数据为空,3行的qrlist部分的数据相同,hitos列上的数据不同,因为我有3行与guia的qrlist上的guia和sigla以及hitos上的idplace匹配。哇,几乎是这样,我不得不从选择中删除fecha,因为fecha来自hitos,而不是qrlist。。。,我只需要在同一个表中从hitos获得fecha。但正如我所说的,在hitos中可能有多行将sigla和guia与idplace和guia匹配,我只需要显示由idplace订购的hitos的第一个fecha。这是我通过查询得到的结果[这是您的查询][.对于你的,我得到两行都有关于hitos的匹配信息,但我缺少fechaAh,获取fecha有点烦人。我希望SQL能有一些简单的方法,通过一些谓词从组中选择前n行。最简单的方法是在select子句中添加另一个表达式:从hitos中选择top 1 h.fecha作为h,其中sigla=h.idplace和guia=h.guia,但这正在成为一个非常低效的查询…否则我们看交叉应用如下:更多信息如下:谢谢,我会检查它。我设法用两个查询进行查询,第一个是从qrlist获取所有行,第二个是从hitos获取行,只打印idplace和GUI与sigl相同的行a和guia来自qrlist,如果hitos上有一行。谢谢你的回答,我可以在另一个页面中使用该查询哇,几乎是,我不得不从SELECT中删除fecha,因为fecha来自hitos而不是qrlist…,我只需要从同一个表中的hitos中获取fecha。但正如我所说的,可以有多行匹配sigla和guia有了hitos中的idplace和guia,我只需要显示idplace从hitos订购的第一个fecha。这是我通过我的查询得到的(这是你的)[.对于你的,我得到两行都有关于hitos的匹配信息,但我缺少fechaAh,获取fecha有点烦人。我希望SQL能有一些简单的方法,通过一些谓词从组中选择前n行。最简单的方法是在select子句中添加另一个表达式:从hitos中选择top 1 h.fecha作为h,其中sigla=h.idplace和guia=h.guia,但这正在成为一个非常低效的查询…否则我们看交叉应用如下:更多信息如下:谢谢,我会检查它。我设法用两个查询进行查询,第一个是从qrlist获取所有行,第二个是从hitos获取行,只打印idplace和GUI与sigl相同的行如果在hitos上有一行的话。谢谢你的回答,我可以在另一个页面中使用这个查询