下面是表格布局:
表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)."'";

最佳答案

在单个查询中(未测试):

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

关于php - 根据其他表的结果从MySQL提取记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15582528/

10-11 12:56