SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.11.2010 02:30:32

denisOg
Участник
Зарегистрирован: 20.11.2009
Сообщений: 15

Сложная выборка из БД кто подскажет?

Есть таблица `users`
|-----|-----|------|
|  id   |name|desc  |
|-----|-----|------|
|   1  | den  | boy  |
|-----|-----|------|
|   2  | serg| boy  |
|-----|-----|------|
|   3  | ann  | girl|
|-----|-----|------|
|   4  | dima| boy  |
|-----|-----|------|

Есть таблица `users_contacts`
|-----|-----|------|
|  id   |tel    |uid|
|-----|-----|------|
|   1  | 222  | 1     |
|-----|-----|------|
|   2  | 3345|   3   |
|-----|-----|------|
|   3  | 5654| 1     |
|-----|-----|------|

Есть таблица `users_profiles`
|-----|-----|------|
|  id   |id_p    |uid|
|-----|-----|------|
|   1  | 1     | 1     |
|-----|-----|------|
|   2  | 2     | 4     |
|-----|-----|------|
|   3  | 7     | 1     |
|-----|-----|------|

Как одним запросом выбрать, точнее сделать следующую выборку
Выбрать из таблицы `users` все, выбрать также из таблицы  `users_contacts`
значение поля 'tel ' где users_contacts.uid=users.id  и выбрать из таблицы`users_profiles` все записи где users_profiles.uid=users.id


Для всех пользователей из таблицы  `users` выбрать их телефоны и все профили, что к ним относятся. Возможно ли это сделать одним запросом?

Неактивен

 

#2 16.11.2010 10:35:57

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сложная выборка из БД кто подскажет?

SELECT * FROM `users` LEFT JOIN `users_contacts` ON users_contacts.uid=users.id LEFT JOIN `users_profiles` ON users_profiles.uid=users.id;


http://dev.mysql.com/doc/refman/5.5/en/join.html

Неактивен

 

#3 16.11.2010 11:03:31

denisOg
Участник
Зарегистрирован: 20.11.2009
Сообщений: 15

Re: Сложная выборка из БД кто подскажет?

vasya написал:

SELECT * FROM `users` LEFT JOIN `users_contacts` ON users_contacts.uid=users.id LEFT JOIN `users_profiles` ON users_profiles.uid=users.id;


http://dev.mysql.com/doc/refman/5.5/en/join.html

Спасибо. с левт джоин я тоже думал, только не представлю как будет идти вывод в скрипте.
то есть. Это нужно будет вписать Имя(оно одно), Контакт(оно одно) а потом Профили (их обычно много) выводить через цикл? Именно профили(1,4,2)-это через цикл выводить?
ВЫвод должен быть таким

Имя                             Контакт                                    Профили

den                            1111                                           1,4,2
ann                            333                                             4,2

Сегодня напишу , если не получиться выведу.

Отредактированно denisOg (16.11.2010 11:04:28)

Неактивен

 

#4 16.11.2010 15:32:44

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Сложная выборка из БД кто подскажет?

SELECT .. group_concat(id_p) as `Профили` FROM `users` LEFT JOIN `users_contacts` ON users_contacts.uid=users.id LEFT JOIN `users_profiles` ON users_profiles.uid=users.id GROUP BY `users`.id;

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson