SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 28.10.2011 00:56:36

andriyleshko
Участник
Зарегистрирован: 28.10.2011
Сообщений: 2

Помогите з запросом!

Написать SQL-запрос, возвращающий название фирмы и ее телефон. В результате
   должны быть представлены все фирмы по одному разу. Если у фирмы нет телефона,
   нужно вернуть пробел или прочерк. Если у фирмы несколько телефонов, нужно
   вернуть любой из них.
   Исходные данные:

Таблица Firms:
ID    Name
1     Sony
2     Panasonic
3     Samsung

Таблица Phones:
phone_id  FirmID  Phone
1         1       332-55-56
2         1       332-50-01
3         2       256-39-11

Для представленного примера запрос должен вернуть:
Name        Phone
Sony        332-55-56
Panasonic   256-39-11
Samsung

Неактивен

 

#2 28.10.2011 01:01:17

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите з запросом!

SELECT F.Name,IFNULL( (SELECT max(Phone) FROM Phones P WHERE P.FirmID = F.id),'-') FROM FIRMS F;


Оно?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 28.10.2011 01:21:57

andriyleshko
Участник
Зарегистрирован: 28.10.2011
Сообщений: 2

Re: Помогите з запросом!

Большое спасибо!!!

Неактивен

 

#4 28.10.2011 02:13:18

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Помогите з запросом!

Пожалуйста smile.

Эффективнее (при наличии индекса на поле FirmID) будет

SELECT F.Name,max(ifnull(P.Phone,'-')) as pn FROM t_4869_Firms F LEFT JOIN t_4869_Phones P on F.id = P.FirmID GROUP BY F.Name;

или так ( при наличии индекса на связку(FirmID,Phone) )

select F.Name, ifnull(P.ph,'-') from t_4869_Firms F left join (select FirmID,max(Phone) as ph from t_4869_Phones group by FirmID ) P on F.id = P.FirmId;

Отредактированно deadka (28.10.2011 02:13:39)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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