Малхасян Г.
20 сообщений
#16 лет назад
Привет Ребята.. Вот делаю сайт. в нем база выглядит так

CREATE TABLE `friendship` (
`friendship_id` int(11) NOT NULL auto_increment,
`user1_id` int(11) NOT NULL,
`user2_id` int(11) NOT NULL,
`user1_yes` int(11) NOT NULL default '0',
`user2_yes` int(11) NOT NULL default '0',
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`friendship_id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;

--
-- Dumping data for table `friendship`
--

INSERT INTO `friendship` VALUES (2, 53, 50, 1, 1, '2008-12-07 01:02:09');


как одним запросом в майскюл выявить так сказать Друзей У друзей определенного Юзера?

Дрызями считаютсья только те у кого стоит user1_yes=1,user2_yes=2
Максим Ф.
3195 сообщений
#16 лет назад
Тут М.
626 сообщений
#16 лет назад
Что-то в таком духе:

SELECT u.id
FROM users u, friendship f
WHERE u.id = f.user1_id AND f.user2_id in (
SELECT u1.id
FROM users u1, friendship f1
WHERE u1.id = f1.user1_id AND f1.user2_id = ?
OR u1.id = f1.user2_id AND f1.user1_id = ?
)
OR u.id = f.user2_id AND f.user1_id in (
SELECT u2.id
FROM users u2, friendship f2
WHERE u2.id = f2.user1_id AND f2.user2_id = ?
OR u2.id = f2.user2_id AND f2.user1_id = ?
)


где users - таблица с пользователями, в которой есть поле id
? - id пользователя, для которого ищем друзей друзей
код жадный, оптимизируйте сами
PS. не надо делать такие таблички - это не правильно
Малхасян Г.
20 сообщений
#16 лет назад
А как правилнее?
Это если я правильно помню брал из Социал Енджин...