SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 15.08.2010 02:37:25

Mobelis
Участник
Зарегистрирован: 15.08.2010
Сообщений: 10

Помощь в составлении запроса

Добрый день столкнулся с проблемой. Не как не получается составить запрос. Задача такова имеется 2 таблицы:

Код:

drop table phone;
drop table personal;

create table personal(
id_personal tinyint primary key,
fio varchar(30) not null,
email varchar(30) not null,
doljnost varchar(20) not null);

create table phone(
id_phone tinyint ,
id_pers tinyint default NULL,
phone_num varchar(20)  not null,
primary key(id_phone),
foreign key(id_pers) references personal(id_personal)) ;

insert into personal (id_personal,fio,email,doljnost )
value
 (1,'Vasya Pupkin','vasya@email.com','meneger'),
 (2,'petya Pupkin','petya@email.com','Operator'),
 (3,'kolya Pupkin','kolya@email.com','Operator'),
 (4,'sasha Pupkin','sasha@email.com','Operator'),
 (5,'masha Pupkin','masha@email.com','Administrator'),
 (6,'nikonor Pupkin','nikonor@email.com','Administrator'),
 (7,'efinov Pupkin','efinov@email.com','Administrator'),
 (8,'petrosyan Pupkin','petrosyan@email.com','Accountant'),
 (9,'grigoryan Pupkin','grigoryan@email.com','Accountant'),
 (10,'viktor Pupkin','viktor@email.com','Accountant');

insert into phone(id_phone,id_pers,phone_num)
value
 (1,1,'(844) 844-1392'),
 (2,2,'(855) 159-4476'),
 (3,6,'(844) 541-8285'),
 (4,6,'(855) 919-2386'),
 (5,7,'(855) 313-7069'),
 (6,8,'(855) 186-6520'),
 (7,2,'(855) 619-9051'),
 (8,3,'(811) 611-0083'),
 (9,10,'(844) 070-1392'),
 (10,NULL,'(833) 891-4216');

Нужно вывести таблицу которая содержала бы такие колонки как : Сотрудник Должность Номер телефона. Если номера телефона нету просто выводим пустую ячейку. Если присмотреться в то как заполнена таблицы с номерами телефонов то можно заметить что есть сотрудники за которыми числиться 2 номера. Так вот нужно эти оба номера вывести в одну ячейку напротив имени сотрудника используя как я понимаю

concat


Для вывода просто списка сотрудников и номеров я использовал
join left

Код:

SELECT
t.fio,t1.phone_num
from personal t
left join phone t1 on(t1.id_pers=t.id_personal)
GROUP BY
t.id_personal

Но вот как составить запрос что бы были показаны оба номера в одной ячейки... Напротив имени сотрудника которому принадлежат эти номера. Я так и не пришел к решению...

Неактивен

 

#2 15.08.2010 03:55:17

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Помощь в составлении запроса

То, что Вы ищете, называется GROUP_CONCAT.

Неактивен

 

#3 15.08.2010 04:14:37

Mobelis
Участник
Зарегистрирован: 15.08.2010
Сообщений: 10

Re: Помощь в составлении запроса

Большое спасибо оказывается всё так просто.

Неактивен

 

Board footer

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