Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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,以下是表格布局: 表1: Id-U1-U2-状态 表2 Id-U1-U2-类型-状态 我需要选择表2中的所有记录,其中U1或U2与表1中U1或U2中的数字匹配,状态设置为“已确认” 这就是我所拥有的,但它远远不够高效,并且没有根据创建记录的时间对记录进行排序,而是将与每个ID相关联的所有记录集中在一起 $q = "SELECT `U1`, `U2` FROM `Table1` WHERE `U1='{VALUE}' OR `U2`='{VALUE}' AND `Status`='Confirm

以下是表格布局:

表1: Id-U1-U2-状态

表2 Id-U1-U2-类型-状态

我需要选择表2中的所有记录,其中U1或U2与表1中U1或U2中的数字匹配,状态设置为“已确认”

这就是我所拥有的,但它远远不够高效,并且没有根据创建记录的时间对记录进行排序,而是将与每个ID相关联的所有记录集中在一起

 $q = "SELECT `U1`, `U2` FROM `Table1` WHERE `U1='{VALUE}' OR `U2`='{VALUE}' AND `Status`='Confirmed';
{Value}=我们拥有的预存储值。在循环执行该查询并确定表1中的哪个值不等于我们预定义的值$ur后:

 $q2 = "SELECT * FROM `Table2` WHERE `U1`='".mysql_real_escape_string($ur)."' OR `U2`='".mysql_real_escape_string($ur)."'";

根据你的陈述:

我需要选择表2中的所有记录,其中U1或U2与表1中U1或U2中的数字匹配,状态设置为“已确认”


根据你的陈述:

我需要选择表2中的所有记录,其中U1或U2与表1中U1或U2中的数字匹配,状态设置为“已确认”


在未测试的单个查询中:

SELECT T2.* FROM (
    SELECT U2 AS VALUE FROM Table1 
    WHERE U1 = :value AND STATUS = "Confirmed"
    UNION
    SELECT U1 AS VALUE FROM Table1 
    WHERE U2 = :value AND STATUS = "Confirmed"
) AS T1, Table2 AS T2
WHERE T2.U1 = T1.VALUE  OR T2.U2 = T1.VALUE
ORDER BY T2.ID

在未测试的单个查询中:

SELECT T2.* FROM (
    SELECT U2 AS VALUE FROM Table1 
    WHERE U1 = :value AND STATUS = "Confirmed"
    UNION
    SELECT U1 AS VALUE FROM Table1 
    WHERE U2 = :value AND STATUS = "Confirmed"
) AS T1, Table2 AS T2
WHERE T2.U1 = T1.VALUE  OR T2.U2 = T1.VALUE
ORDER BY T2.ID

我已经测试过了。不确定这是否是正确的结果@hek2mgl-取决于OPs期望的结果-对需求有点困惑。这应该很接近了:谢谢你的小提琴对需求“->我也是!”有点困惑。。sqlfiddle岩石!!:@是的,很抱歉搞混了。这几乎就是我所需要的,但我需要能够将它从表1获得的内容与预定义的值相匹配,这实际上就是表1的作用。我只需要表1中某个数字出现在U1或U2中的记录,然后使用表1中的结果对表2执行相同的操作。因此,假设这些数字与表1中的数字“8”关联:9、20、34。然后我需要表2中的所有记录,这些数字出现在U1或U2中。我已经测试过了。不确定这是否是正确的结果@hek2mgl-取决于OPs期望的结果-对需求有点困惑。这应该很接近了:谢谢你的小提琴对需求“->我也是!”有点困惑。。sqlfiddle岩石!!:@是的,很抱歉搞混了。这几乎就是我所需要的,但我需要能够将它从表1获得的内容与预定义的值相匹配,这实际上就是表1的作用。我只需要表1中某个数字出现在U1或U2中的记录,然后使用表1中的结果对表2执行相同的操作。因此,假设这些数字与表1中的数字“8”关联:9、20、34。然后我需要表2中的所有记录,这些数字出现在U1或U2中。要在创建日期排序,需要有一个字段保存该创建日期,否则mysql不会跟踪该信息。如果定义为“自动递增”,则可能在Id上……对于在创建日期排序,您需要有一个保存该创建日期的字段,否则mysql不会跟踪该信息。也许在Id上,如果它被定义为自动增量…你,我的朋友,是聪明的+1给你!谢谢你,我的朋友,太棒了+1给你!谢谢