Есть 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
Результат возвращает один столбец с логинами тех, на кого подписан данный юзер
Дак вот, можно ли как-то сделать чтобы напротив каждого возвращаемого логина был флажек, подписан ли он тоже на меня?
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. Потом выводить по совпадениям в обоих массивах, соответственно.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости