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