Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php+mysql (выборка из двух таблиц) 
:(
    Опции темы
Dmitry_177
Дата 26.1.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Есть две таблицы, в одной хранятся пользователи и их данные, во второй все сообщения пользователей и id-пользователя из первой таблицы, который это сообщение написал.. Так вот мне нужно вывести все сообщения из второй таблицы с выводом именами авторов сообщений..

т.е. в упрощенном варианте:

поля первой таблицы users:
user_id - id пользователя
user_name - имя

поля второй таблицы messages:
user_id - id пользователя из 1-й таблицы, т.е. автора сообщения
message_text - текст сообщения

выводим все сообщения:
Код

select * from messages


помогите доработать запрос, чтобы выводил еще и имена авторов сообщений из первой таблицы, что-то я не пойму как это сделать..

и еще не очень понятно как потом из полученного массива в PHP получать имя автора.. при работе с одной таблицей тут все понятно, по названию поля в таблице, а вот с двумя..
PM MAIL   Вверх
flashaa
Дата 26.1.2008, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Это же элементарно:
Код

select m.*, u.user_name from messages as m left join users as u on m.user_id = u.id

PM MAIL   Вверх
Dmitry_177
Дата 26.1.2008, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



а как мне в PHP в массиве задавать имя поля? а ели будет в таблицах два одинаковых по названию поля, в PHP из какой таблицы будет браться значение задав название поля?
PM MAIL   Вверх
flashaa
Дата 26.1.2008, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Хм. Думаю тут можно natural join. Это подразумевает объединение таблиц по полю с одинаковым именем.
Код

select m.*, u.user_name from messages natural join users

Цитата

и еще не очень понятно как потом из полученного массива в PHP получать имя автора.. при работе с одной таблицей тут все понятно, по названию поля в таблице, а вот с двумя..

Имена полей не должны совпадать. Т.е. если в интересующих таблицах названия полей совпадают, переименовайте их, используя as.

Код

select m.user_id as m_u_id ...


Это сообщение отредактировал(а) flashaa - 26.1.2008, 22:56
PM MAIL   Вверх
gta4kv
Дата 26.1.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Код

select m.user_id, u.user_id as uid from table1 m join table2 u


Тока под себя подстрой smile

Это сообщение отредактировал(а) gta4kv - 26.1.2008, 22:56
PM MAIL   Вверх
flashaa
Дата 26.1.2008, 23:00 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Цитата(gta4kv @  26.1.2008,  22:54 Найти цитируемый пост)
select m.user_id, u.user_id as uid from table1 m join table2 u

в mysql этот код не будет работать.
PM MAIL   Вверх
gta4kv
Дата 26.1.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



flashaa, почему?

Это сообщение отредактировал(а) MoLeX - 27.1.2008, 17:00
PM MAIL   Вверх
flashaa
Дата 26.1.2008, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Цитата(gta4kv @  26.1.2008,  23:01 Найти цитируемый пост)
flashaa, почему? 

Извиняюсь, уточнил. Такой синтаксис справедлив не только для SQL но и для MySQL.

Это сообщение отредактировал(а) MoLeX - 27.1.2008, 17:00
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.4208 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.