【发布时间】:2013-08-31 16:17:59
【问题描述】:
我正在尝试从下表中查询 sql。我已经尝试了很多方法来完成这项工作。但对于我来说,找到解决方案似乎太复杂了。
user_id="200"; // 假设用户 ID 现在是 200。
tb_conversation
-------------------------------------------------------------------------------------
c_id | user_one_id | user_two_id | user_one_delmsg | user_two_delmsg
-------------------------------------------------------------------------------------
001 | 200 | 198 | Y | N
------------------------------------------------------------------------------------
002 | 195 | 200 | Y | N
------------------------------------------------------------------------------------
003 | 200 | 193 | N | N
------------------------------------------------------------------------------------
我要做的是查询与上面的 user_id 匹配的唯一一个表。 它可以是表中的 user_one 或 user_two。如果 user_id 在表中是 user_one,那么 user_one_delmsg 不能是“Y”。或者如果表中的user_id是user_two,那么user_two_delmsg不能是“Y”
我尝试过的:
$q= "SELECT * from conversation ORDER BY c_id DESC ";
$_stmt = $conn->prepare($q);
$_stmt->execute();
$row=$_stmt->fetchAll();
foreach ($row as $r) {
if ($user_id==$r['user_one_id']){
if ( $r['user_one_delmsg']!="Y") {
//do something
}
}
if ($user_id==$r['user_two_id']){
if ( $r['user_two_delmsg']!="Y") {
//do something
}
}
我得到的是: 与查询匹配的结果数组。 但是我想要的只是一个结果,即最大 c_id 和 user_x_delmsg 不得为“Y”
我也只使用了 fetch();我没有得到我想要的。 我也将限制 1 放在查询的最后,但没有帮助。
【问题讨论】:
-
你想要的结果是什么?是 3 吗?
c_id的列类型是什么?