根据其他表的结果从MySQL中提取记录

时间:2013-03-23 01:52:44

标签: 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`='Confirmed';

{Value} =我们拥有的预存值。执行该查询后(循环执行)并确定表1中的哪个值等于我们的预定义值(使其为$ ur):

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

根据您的陈述:

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

SELECT T2.*
FROM Table2 T2
   JOIN Table1 T1 ON 
      (T2.U1 = T1.U1 OR T2.U1 = T1.U2 OR T2.U2 = T1.U1 OR T2.U2 = T1.U2)
WHERE T2.Status = 'confirmed'