|
|
|
| У меня следующая проблема, щас попробую сформулировать , напрмиер, (если из далека) есть два запроса
select drug_id from t_friends Where user_id=1
select drug_id from t_friends Where user_id=2
вот мне надо как то их объеденить и вообще возможно это сделать одиним запосом? что бы возвращлись тока те drug_id которые являются общими для первого запроса и второго ,
т.е. задача следующая надо найти общих друзей пользователя 1 и пользовател 2 | |
|
|
|
|
|
|
|
для: UshkiNaMakushke
(29.02.2008 в 13:46)
| |
select
drug_id
from t_friends
Where
user_id=1
OR
user_id=2
|
| |
|
|
|
|
|
|
|
для: KirillKiev
(29.02.2008 в 14:05)
| | блин я ж русским языком написала так и знала не поймут, таким макаром он вернет мне все подряд а мне надо не так если я напишу так как вы сказли то получиться например
user id _____ drug_id
1 ___________3
1___________ 4
2 ___________3
2___________5
вот мне же надо что б запрос вернул тока общих друзей т.е. в данном случае
user id _____ drug_id
1 ___________3
2 ___________ 3 | |
|
|
|
|
|
|
|
для: UshkiNaMakushke
(29.02.2008 в 14:17)
| | структуру таблиц дайте.. ничего не понятно | |
|
|
|
|
|
|
|
для: KirillKiev
(29.02.2008 в 14:55)
| | DROP TABLE IF EXISTS `t_friends`;
CREATE TABLE `t_friends` (
`friend_id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL default '0',
`drug_id` int(11) NOT NULL default '0',
`flag` tinyint(3) NOT NULL default '0',
`data` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`friend_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
#
# Dumping data for table t_friends
#
INSERT INTO `t_friends` VALUES (1,1,2,1,'2008-02-27 16:54:51');
INSERT INTO `t_friends` VALUES (2,2,1,1,'0000-00-00 00:00:00');
INSERT INTO `t_friends` VALUES (3,3,1,1,'2008-02-29 11:03:19');
INSERT INTO `t_friends` VALUES (4,3,2,1,'2008-02-29 11:07:11');
INSERT INTO `t_friends` VALUES (5,1,3,1,'0000-00-00 00:00:00');
INSERT INTO `t_friends` VALUES (6,2,3,1,'0000-00-00 00:00:00'); | |
|
|
|
|
|
|
|
для: UshkiNaMakushke
(29.02.2008 в 14:58)
| | Если перебирать все возможные варианты то так
select distinct
t1.user_id,
t1.drug_id
from
t_friends as t1,
t_friends as t2
Where
t1.user_id != t2.user_id
and
t1.drug_id = t2.drug_id
order by drug_id
|
| |
|
|
|
|
|
|
|
для: KirillKiev
(29.02.2008 в 15:17)
| | если переберать вес овзможэные варианты то можно шизнуться, пользоватлей то много) ну просто это как на одноклассниках на сайте вконтакте ты заходишь на страницу к пользоватлю и смотришь его друзей, смотришь друзей которые он лайин, вот еще можно смотреть ваших общих друзей) вот мне и нужен запрос который между 2 полязователями устанавливает общих друзей, если такое вообще возможно сделать одни запросом | |
|
|
|
|
|
|
|
для: UshkiNaMakushke
(29.02.2008 в 15:26)
| | ну можно так
типа пользователи 1 и 2
select distinct
t1.user_id,
t1.drug_id
from
t_friends as t1,
t_friends as t2
Where
t1.user_id != t2.user_id
and
t1.drug_id = t2.drug_id
and
(
t1.user_id = 2
or
t1.user_id = 1
)
and
(
t2.user_id = 2
or
t2.user_id = 1
)
order by user_id
|
может можно и попроще.. но чет я навскидку не скажу
а если убрать t1.user_id, и order by user_id (бо ругаться будет) - выведет только id друзей... | |
|
|
|
|
|
|
|
для: KirillKiev
(29.02.2008 в 15:55)
| | ОО круто пасиб сработало))) | |
|
|
|
|
|
|
|
для: UshkiNaMakushke
(29.02.2008 в 17:13)
| | ) | |
|
|
|