Php 根据其他表的结果从MySQL中提取记录
以下是表格布局: 表1: Id-U1-U2-状态 表2 Id-U1-U2-类型-状态 我需要选择表2中的所有记录,其中U1或U2与表1中U1或U2中的数字匹配,状态设置为“已确认” 这就是我所拥有的,但它远远不够高效,并且没有根据创建记录的时间对记录进行排序,而是将与每个ID相关联的所有记录集中在一起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
$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给你!谢谢