简体   繁体   中英

MySQL query involving three stages and two tables

Database:

  • xx_users (id, name, user_id, email, location)
  • xx_questions (id, question, description, user_id)

Code:

$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
}

I am trying to select questions from xx_questions (that have been posted by users) should any of three situations arise:

  1. Those values where the poster's user_id matches that of one of the current user's friends (ie the poster and the user are friends)
  2. Those values where the poster's user_id matches that of the user (ie the poster is the user)
  3. Those values where the poster's location matches that of the current user (ie the poster and user are currently in the same city)

I have managed to make 1 and 2 work, but the problems arise when I try to introduce 3, so my two questions are:

  1. What is the correct MySQL for 3?
  2. How is that integrated with 1 and 2?

Thanks in advance, let me know if you need more information.

To get the information that you want, you need to join xx_questions to xx_users. Something like the following returns questions that match any one of the three conditions:

select *
from xx_questions q join
     xx_users u
     on q.user_id = u.user_id
where q.user_id in (<implode(',', $friend_ids_arr)>) or
      q.user_id = '$user' or
      u.location = (select location from xx_users where USER_ID = $user)

I have written this more like SQL than as a string, so it is easier to read.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM