ВЫБИРАЙТЕ только одни данные, если все остальные данные таблицы верны - PullRequest
1 голос
/ 07 июля 2019

Я работал над этим кодом для сайта социальной сети WordPress, где вы можете визуализировать людей противоположного пола, только если они не ваши друзья (если они ваши друзья, они перейдут на другую страницу)

В php я уже могу отделить мужчин от женщин, но теперь я хочу также исключить мужчин / женщин, которые уже являются твоим другом

$query = "SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data, WHERE field_id = 3 AND value = 'homme'";

(при этом я получу только мужчин), сейчасинформация о статусе их друга находится в другой таблице, я попытался использовать WHERE EXIST, чтобы собрать его

$query = "SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data, WHERE field_id = 3 AND value = 'homme' AND EXIST (SELECT id {$wpdb->prefix}bp_friends WHERE (initiator_user_id = $user_id AND is_confirmed = 1) OR (friend_user_id = $user_id AND is_confirmed = 1)) ";

Но, похоже, не работает.Я просто хочу user_id из первой таблицы, но если я хочу извлечь статус друга (который я не хочу извлекать, я просто хочу, чтобы он подтвердил мою другую информацию, чтобы вырезать user_ids), я мог бы применить этот запрос

$already_friends = "SELECT is_confirmed FROM  {$wpdb->prefix}bp_friends, WHERE initiator_user_id = $user_id OR friend_user_id = $user_id";

1 Ответ

0 голосов
/ 07 июля 2019

Я не знаю, какова структура таблиц, на которые вы ссылаетесь.На основании предоставленной информации это может сработать:


SELECT user_id 
FROM {$wpdb->prefix}bp_xprofile_data 
WHERE 
   field_id = 3 AND 
   value = 'homme' AND 
   user_id NOT IN (SELECT friend_user_id 
                   FROM {$wpdb->prefix}bp_friends 
                   WHERE initiator_user_id=$user_id AND is_confirmed=1) AND
   user_id NOT IN (SELECT initiator_user_id
                   FROM {$wpdb->prefix}bp_friends 
                   WHERE friend_user_id=$user_id AND is_confirmed=1)

Я должен признать, что этот оператор SQL выглядит плохо: он медленный и его трудно читать.Это должно быть улучшено, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...