Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: связать две таблицы
 
 автор: technic611   (27.01.2011 в 19:45)   письмо автору
4.4 Кб
 
 

есть две таблицы (см. вложенные файлы)
нужно подгружать список друзей из таблицы frends, аватарки для них брать из таблицы users

SELECT что-то нужно  WHERE frends.id_user='".$_GET['id'].


как сделать запрос?

  Ответить  
 
 автор: technic611   (27.01.2011 в 19:46)   письмо автору
4.4 Кб
 
   для: technic611   (27.01.2011 в 19:45)
 

таблица frends

  Ответить  
 
 автор: Trianon   (27.01.2011 в 19:49)   письмо автору
 
   для: technic611   (27.01.2011 в 19:46)
 

что там делает слово Andrey ?


Cтруктуру таблицы можно получить запросом
SHOW CREATE TABLE frends;

  Ответить  
 
 автор: technic611   (27.01.2011 в 20:19)   письмо автору
 
   для: Trianon   (27.01.2011 в 19:49)
 

это таблица с друзьями. Andrey это друг пользователя japan_parts.

  Ответить  
 
 автор: Trianon   (27.01.2011 в 20:24)   письмо автору
 
   для: technic611   (27.01.2011 в 20:19)
 

>это таблица с друзьями. Andrey это друг пользователя japan_parts.

А почему пользователь japan_parts обозначен своим первичным ключом, в то время как пользователь Andrey обозначен чем-то вроде имени?
Это не есть гуд.

  Ответить  
 
 автор: technic611   (27.01.2011 в 20:36)   письмо автору
 
   для: Trianon   (27.01.2011 в 20:24)
 

ну посмотрите в таблице frends есть поле id_user. Там идентифкатор на пользователя japan_parts. Чего то вы меня путаете

  Ответить  
 
 автор: Trianon   (27.01.2011 в 20:40)   письмо автору
 
   для: technic611   (27.01.2011 в 20:36)
 

С пользователем 1 (japan_parts) всё хорошо.
Но у пользователя Andrey тоже ведь есть идентификатор?
Почему он не применен?

  Ответить  
 
 автор: technic611   (27.01.2011 в 21:18)   письмо автору
44 Кб
 
   для: Trianon   (27.01.2011 в 20:40)
 

прошу прощения ))) не все таблицы отправил. таблица users
напоминаю . для пользователя japan_parts подгружаем список друзей из таблицы frends, имена аватарок берем из таблицы users уже по идентификатору друга как то так

  Ответить  
 
 автор: Лена   (28.01.2011 в 12:33)   письмо автору
 
   для: technic611   (27.01.2011 в 21:18)
 


SELECT f.*,u.avatar FROM frends f 
LEFT JOIN users u ON f.id_user = u.id_user
WHERE f.id_user=".(int)$_GET['id'];

  Ответить  
 
 автор: Trianon   (28.01.2011 в 12:57)   письмо автору
 
   для: Лена   (28.01.2011 в 12:33)
 

Очень неожиданная последовательность вокруг LEFT JOIN

  Ответить  
 
 автор: Лена   (28.01.2011 в 13:16)   письмо автору
 
   для: Trianon   (28.01.2011 в 12:57)
 

Почему? Я чего-то не поняла в постановке задачи?

  Ответить  
 
 автор: Trianon   (28.01.2011 в 13:41)   письмо автору
 
   для: Лена   (28.01.2011 в 13:16)
 

сколько строк, по-Вашему, вернет сервер?

  Ответить  
 
 автор: Лена   (28.01.2011 в 14:15)   письмо автору
 
   для: Trianon   (28.01.2011 в 13:41)
 

Не по тому полю объединила таблицы. Запрос в базе проверила, сразу увидела.

SELECT f. * , u.avatar
FROM friends f
LEFT JOIN users u ON f.id_friends = u.id_user
WHERE f.id_user =3

Вам, как обычно, спасибо )

  Ответить  
 
 автор: Trianon   (28.01.2011 в 14:27)   письмо автору
 
   для: Лена   (28.01.2011 в 14:15)
 

id_frends , наверняка, первичный ключ таблицы frends
Сколько строк вернется?

Думайте еще.

Пожалуйста.

  Ответить  
 
 автор: technic611   (28.01.2011 в 15:01)   письмо автору
 
   для: Trianon   (28.01.2011 в 14:27)
 

ну работает ведь!?

  Ответить  
 
 автор: Trianon   (28.01.2011 в 15:17)   письмо автору
 
   для: technic611   (28.01.2011 в 15:01)
 

Нет, не работает.

  Ответить  
 
 автор: technic611   (28.01.2011 в 15:36)   письмо автору
 
   для: Trianon   (28.01.2011 в 15:17)
 

у меня почему то работает

  Ответить  
 
 автор: Trianon   (28.01.2011 в 15:49)   письмо автору
 
   для: technic611   (28.01.2011 в 15:36)
 

ну мало ли почему.
У Вас id_user = 1 самсебедруг, и ничего.
и уникальный ключ у Вас с индексом путается и тоже ничего.

  Ответить  
 
 автор: technic611   (28.01.2011 в 15:02)   письмо автору
 
   для: Trianon   (28.01.2011 в 14:27)
 

он уникальный, index

  Ответить  
 
 автор: Лена   (28.01.2011 в 16:39)   письмо автору
 
   для: Trianon   (28.01.2011 в 14:27)
 

Структура таблицы друзей неправильная. id_frends - да, первичный ключ.

CREATE TABLE `friends` (
  `id_friends` int(11) NOT NULL auto_increment,
  `login` varchar(255) default NULL,
  `id_user` int(11) NOT NULL,
  PRIMARY KEY  (`id_friends`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

-- 
-- Дамп данных таблицы `friends`
-- 

INSERT INTO `friends` VALUES (1, 'Andrey', 3);
INSERT INTO `friends` VALUES (2, 'Dima', 3);
INSERT INTO `friends` VALUES (3, 'Igor', 1);
INSERT INTO `friends` VALUES (4, 'Igor', 2);


Игорь дружит с Димой и Андреем. Выходит, в friends две строки с логином Igor. Так быть не должно.
Когда я делала, у меня вообще структура этой таблицы была другой. Здесь связь многие ко многим, я дружу со многими, многие дружат со мной.
Значит, поля:
id_user - юзер из таблицы users
id_friend - тот, с кем дружит юзер.

Поля надо сделать как составной ключ.
Лепить запрос к кривой таблице - дело неблагодарное.

  Ответить  
 
 автор: Trianon   (28.01.2011 в 16:58)   письмо автору
 
   для: Лена   (28.01.2011 в 16:39)
 

> Лепить запрос к кривой таблице - дело неблагодарное.
согласен, не смотря на (28.01.2011 в 13:20)

  Ответить  
 
 автор: technic611   (28.01.2011 в 20:13)   письмо автору
31.8 Кб
 
   для: Лена   (28.01.2011 в 16:39)
 

ничего не понял из этого поста. Что где неправильно? у меня это не имена, а логины, имена у меня сохранены в таблице users Так как ты показала у меня и есть.
id_user в таблице users
id_frends в таблице frends.
Чем же она кривая?
У меня не так, как во влож. файле

  Ответить  
 
 автор: Trianon   (28.01.2011 в 20:29)   письмо автору
 
   для: technic611   (28.01.2011 в 20:13)
 

скажите, пожалуйста, Вы кроме как картинками изъясняться никак не можете?

Структура таблицы - это текст вобще-то.

  Ответить  
 
 автор: technic611   (28.01.2011 в 21:30)   письмо автору
 
   для: Trianon   (28.01.2011 в 20:29)
 

я тоже хочу поинтересоваться у вас, вы здес хоть кому нибудь помогли?

  Ответить  
 
 автор: Trianon   (28.01.2011 в 21:37)   письмо автору
 
   для: technic611   (28.01.2011 в 21:30)
 

да, конечно, с этим проблем нет :)

  Ответить  
 
 автор: technic611   (28.01.2011 в 15:01)   письмо автору
 
   для: Лена   (28.01.2011 в 14:15)
 

а как можно подсчитать число друзей одним запросом, куда COUNT добавить?

  Ответить  
 
 автор: technic611   (28.01.2011 в 13:20)   письмо автору
 
   для: Лена   (28.01.2011 в 12:33)
 

ленчик спасибоооо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования