MySQL: подписан ли пользователь

145
15 декабря 2016, 15:44

Есть 2 таблицы, с юзерами и с теми, на кого подписан юзер

CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment, -- id
  `login` varchar(25) NOT NULL default '', -- Логин
  PRIMARY KEY (`id`)
)
CREATE TABLE `subscribers` (
  `id` int(11) NOT NULL, -- id юзера
  `id_subscriber` int(11) NOT NULL -- На кого подписан юзер
)

Я получаю список подписок таким образом

SELECT us.login
FROM `subscribers` AS sub, `users` AS us
WHERE sub.id = 1 AND us.id = sub.id_subscriber

Результат возвращает один столбец с логинами тех, на кого подписан данный юзер

Дак вот, можно ли как-то сделать чтобы напротив каждого возвращаемого логина был флажек, подписан ли он тоже на меня?

Answer 1
SELECT
  us.login,
  IF(us.id IN (SELECT `id` FROM `subscribers` WHERE `id_subscriber`='MY_ID'), 1, 0) AS IsMySubsciber
FROM `subscribers` AS sub, `users` AS us
WHERE sub.id = 1 AND us.id = sub.id_subscriber

Примерно так, вроде не накосячил. IsMySubscriber - говорящая переменная. Но с учетом тяжести подзапроса я бы после первого запроса собрал все ID и запросил всех своих подписчиков из них ($sql = '... WHERE id IN '.implode(', ', $ids).' AND id_subscriber=MY_ID;'), это должно быть легче для MySQL. Потом выводить по совпадениям в обоих массивах, соответственно.

READ ALSO
Базы данных

Базы данных

Всем привет!

118
Ошибка: No operations allowed after connection closed

Ошибка: No operations allowed after connection closed

В сервлете пытаюсь подключиться к БД и выполнить запросВозникает ошибка

137
Почему записи в таблице БД расположены не по порядку?

Почему записи в таблице БД расположены не по порядку?

Заношу в базу данных записиА они почему-то не по порядку записываются

174
Экспорт бд MySQL

Экспорт бд MySQL

Подскажите, пожалуйста, в чем ошибкаПытаюсь сделать экспорт бд MySQL таким способом

122