![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Таблица друзей:
CREATE TABLE `friends` ( `user1` int(10) unsigned NOT NULL default '0', `user2` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`user1`,`user2`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
В поле user1 - находится меньший id юзеров, в user2 - больший id юзеров.
Как выбрать общих друзей у 2х юзеров?
Неактивен
Использование такого запроса на сколько верно?
SELECT
`users`.`id`,
`users`.`username`,
`users`.`avatar`
FROM (
SELECT
IF (`user1` != 3, `user1`, `user2`) as `uid`
FROM `friends`
WHERE (
`user1` IN (
SELECT IF (`user1` != 1, `user1`, `user2`) as `uid`
FROM `friends`
WHERE
`user1` = 1
OR `user2` = 1
) AND `user2` = 3
) OR (
`user2` IN (
SELECT IF (`user1` != 1, `user1`, `user2`) as `uid`
FROM `friends`
WHERE
`user1` = 1
OR `user2` = 1
) AND `user1` = 3
)
) AS `common_friends`
JOIN `users`
ON `users`.`id` = `common_friends`.`uid`Отредактированно maxtor (09.01.2011 16:40:37)
Неактивен

Неактивен
Имеем такие данные:
INSERT INTO `friends` (`user1`, `user2`) VALUES (1, 2), (2, 3);
У пользователей 1 и 3, как видно, есть общий друг 2. Но выше приведенный запрос его не находит...
Неактивен

Неактивен
privet. a mojete li obyasnit eti kodi:
union,
having,
SELECT IF (`user1` != 1, `user1`, `user2`),
JOIN
ON `users`.`id` = `common_friends`.`uid` (common_friends i on)
.podrobneye pojalusta
Неактивен

Привет.
1. Правила, п.1.
2. Не поднимайте старой темы, вы же правда не собираетесь ее обсуждать?
3. Начните таки с чтения документации, там все эти слова есть.
Неактивен