【发布时间】:2012-12-18 03:57:28
【问题描述】:
数据库:
- xx_users (id, name, user_id, email, location)
- xx_questions(id、问题、描述、user_id)
代码:
$friends = $facebook->api('/me/friends');
$arr= $friends['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
$friend_ids_arr[] = $friend['id'];
}
$sql = "SELECT (SELECT * FROM xx_questions WHERE user_id IN (" . implode(',', $friend_ids_arr) . ") OR user_id = '$user' ORDER BY time DESC) (SELECT * from questions INNER JOIN users ON users.user_id = questions.user_id WHERE users.location = 'Cambridge, Cambridgeshire')";
$data = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($data)) {
// echo values from what's been selected
}
如果出现以下三种情况中的任何一种,我正在尝试从xx_questions(已由用户发布)中选择问题:
- 发帖人的 user_id 与当前用户的一位朋友(即发帖人和用户是朋友)匹配的值
- 发帖人的 user_id 与用户的值匹配的那些值(即发帖人就是用户)
- 发布者的位置与当前用户的位置匹配的值(即发布者和用户当前位于同一城市)
我已经设法使 1 和 2 起作用,但是当我尝试引入 3 时出现问题,所以我的两个问题是:
- 3 的正确 MySQL 是什么?
- 如何与 1 和 2 集成?
提前致谢,如果您需要更多信息,请告诉我。
【问题讨论】:
-
表“xx_questions”和“post”是什么关系?
-
不是答案,只是对您的代码的注释:
user_id IN (value1, value2, ...) OR user_id = some_value等同于user_id IN (value1, value2, ..., some_value)。 -
@Nathan,抱歉,打错了。请参阅更正。