PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: Дружба между пользователями
Поиск в теме | Версия для печати
Green
Отправлено: 29 Июля, 2012 - 14:05:30
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012
Откуда: Кисловодск
Помог: 9 раз(а)
Связка таблиц делается через JOIN.
CODE (
SQL ):
скопировать код в буфер обмена
SELECT `users` .*, `friends` . `user1_id` , `friends` . `user2_id` , `friends` . `state`
FROM `frends`
JOIN `users`
ON `friends` . `user1_id` = `users` . `id`
WHERE ...
Как-то так...
С полями и условиями уже там сами разберетесь думаю...(Отредактировано автором: 29 Июля, 2012 - 14:10:10)
ggg
Отправлено: 29 Июля, 2012 - 17:32:40
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
Green пишет: Связка таблиц делается через JOIN.
CODE (
SQL ):
скопировать код в буфер обмена
SELECT `users` .*, `friends` . `user1_id` , `friends` . `user2_id` , `friends` . `state`
FROM `frends`
JOIN `users`
ON `friends` . `user1_id` = `users` . `id`
WHERE ...
Как-то так...
С полями и условиями уже там сами разберетесь думаю...
Получился массив
не могу понять что с ним делать?
ggg
Отправлено: 29 Июля, 2012 - 18:19:00
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
KingStar пишет: ты получил ID своих друзей
(Добавление)
state - я не знаю что у тебя подразумевается
вынуть из массива id как?
snikers987
Отправлено: 29 Июля, 2012 - 18:27:49
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011
Откуда: Крым
Помог: 25 раз(а)
CODE (
SQL ):
скопировать код в буфер обмена
SELECT `t3` .* FROM `users` AS `t1`
LEFT JOIN `friends` AS `t2` ON `t1` . `id` = `t2` . `user1_id`
LEFT JOIN `users` AS `t3` ON `t3` . `id` = `t2` . `user2_id`
WHERE `t1` . `id` = 1 /*ID текущего юзера*/
(Отредактировано автором: 29 Июля, 2012 - 18:29:47)
-----Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
LIME
Отправлено: 29 Июля, 2012 - 19:07:28
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
snikers987 а нафига таблицу с собой склеивать?
както так
если напортачил с похмелья сорри
CODE (
SQL ):
скопировать код в буфер обмена
SELECT t1.*, t2.* FROM `users` `t1`
JOIN `friends` `t2` ON `t1` . `id` = `t2` . `user1_id`
WHERE `t1` . `id` = 1 /*ID текущего юзера*/
(Добавление)
тут вместо * надо поля вставить нужные
если имена совпадают то алиасы
snikers987
Отправлено: 29 Июля, 2012 - 19:13:00
Участник
Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011
Откуда: Крым
Помог: 25 раз(а)
LIME пишет: snikers987 а нафига таблицу с собой склеивать?
както так
если напортачил с похмелья сорри
CODE (
SQL ):
скопировать код в буфер обмена
SELECT t1.*, t2.* FROM `users` `t1`
JOIN `friends` `t2` ON `t1` . `id` = `t2` . `user1_id`
WHERE `t1` . `id` = 1 /*ID текущего юзера*/
(Добавление)
тут вместо * надо поля вставить нужные
если имена совпадают то алиасы
не так не то выходит,
так тут получаем сначала id связанные с текущим юзером, а затем записи с этими id, тоесть в итоге сразу друзей получем
Вот тестовый "стенд":
Спойлер (Отобразить )
CODE (
SQL ):
скопировать код в буфер обмена
DROP TABLE IF EXISTS `friends` ;
CREATE TABLE `friends` (
`id` int( 11) NOT NULL AUTO_INCREMENT ,
`user1_id` int( 11) DEFAULT NULL ,
`user2_id` int( 11) DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE= InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET= latin1;
-- ----------------------------
-- Records of friends
-- ----------------------------
INSERT INTO `friends` VALUES ( '1' , '1' , '2' ) ;
INSERT INTO `friends` VALUES ( '2' , '1' , '3' ) ;
INSERT INTO `friends` VALUES ( '3' , '1' , '6' ) ;
-- ----------------------------
-- Table structure for `users`
-- ----------------------------
DROP TABLE IF EXISTS `users` ;
CREATE TABLE `users` (
`id` int( 11) NOT NULL AUTO_INCREMENT ,
`name` varchar( 255) DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE= InnoDB AUTO_INCREMENT = 7 DEFAULT CHARSET= latin1;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ( '1' , 'current_user' ) ;
INSERT INTO `users` VALUES ( '2' , 'vasya' ) ;
INSERT INTO `users` VALUES ( '3' , 'kolya' ) ;
INSERT INTO `users` VALUES ( '4' , 'ivan' ) ;
INSERT INTO `users` VALUES ( '5' , 'banan' ) ;
INSERT INTO `users` VALUES ( '6' , 'kolyan' ) ;
(Отредактировано автором: 29 Июля, 2012 - 19:18:34)
-----Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
ggg
Отправлено: 29 Июля, 2012 - 20:49:20
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
snikers987 пишет: LIME пишет: snikers987 нет))
вниматочнее))
так все верно
когда user2 открывает мои друзья, там нет user1
ggg
Отправлено: 30 Июля, 2012 - 13:23:06
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Июль 2012
Помог: 0 раз(а)
[quote=ggg]
snikers987 пишет: LIME пишет: snikers987 нет))
вниматочнее))
так все верно
когда user2 открывает мои друзья, там нет user1[/quote
спасибо все получилось
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB