Три SELECT и два jsons

0

Я создал SELECT, чтобы получить свои сообщества.

И создайте два SELECT, чтобы получить сообщества, за которыми я следую.

Но я получаю только свои сообщества.

Я не получаю сообщества, за которыми я слежу.

$user_id = $_GET["id"];

$row1 = array();
$row2 = array();

// get my communities

$res1 = mysql_query("SELECT * FROM communities where user_id = '$user_id'");

while($r1 = mysql_fetch_assoc($res1)) {
$row1[] = $r1;
   }

// get "id" of my communities I'm following 

$res = mysql_query("SELECT * FROM communities_follow where user_id = '$user_id'");

while($r = mysql_fetch_assoc($res)) {
    $coid = $r["coid"];

// get my communities I'm following 

$res2 = mysql_query("SELECT * FROM communities where id = '$coid'");

while($r2 = mysql_fetch_assoc($res2)) {
$row2[] = $r2;
   }


   }       

 $resp = array_replace_recursive($row1, $row2);

 print json_encode( $resp );
  • 1
    Вы не должны больше использовать mysql_query . Переключитесь на mysqli_query или используйте вместо этого PDO. Смотрите здесь: w3schools.com/php/php_mysql_connect.asp
  • 0
    Тем не менее ваш запрос должен работать, если вы обращаетесь к нужным столбцам в нем с предложением where. Может быть, вы можете добавить структуру таблицы или некоторые данные для уточнения. В любом случае следует избегать цикла PHP, поскольку он всегда будет медленнее, чем прямой запрос, упомянутый в ответах ниже.
Теги:

2 ответа

0
Лучший ответ

Внутреннее соединение даст вам только те сообщества, где вы следуете:

SELECT c.* FROM communities c 
INNER JOIN communities_follow cf ON c.id = cf.coid
WHERE cf.user_id = '$user_id';

Или без JOIN:

SELECT * FROM communities
WHERE EXISTS (SELECT 1 FROM communities_follow cf
  WHERE c.id = cf.coid AND cf.user_id = '$user_id')
0

Попробуйте этот sql.

SELECT * FROM communities c LEFT JOIN communities_follow cf ON c.user_id = cf.user_id where
cf.user_id = '$user_id';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню