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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL] написать запрос, который будет показывать, как бы лучше сделать? 
V
    Опции темы
Agares
  Дата 15.7.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нужно следующее:
1. Используем таблицы: company, company_product, company_user
2. Вывести в формате <имя компании> <количество записей в таблице
company_product для этой компании>, ключ: company_id
3. Отсортировать по алфавиту
4. Найти пользователей, для которых не существует компании

как бы это лучше сделать?

Заранее спасибо.


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
ТоляМБА
Дата 15.7.2008, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(Agares @  15.7.2008,  14:42 Найти цитируемый пост)
2. Вывести в формате <имя компании> <количество записей в таблицеcompany_product для этой компании>, ключ: company_id3. Отсортировать по алфавиту

Код
Select c.companyName, count(cp.id)
from company c
inner join company_product cp
on c.id=cp.company_id
group by c.companyName
order by c.companyName

Цитата(Agares @  15.7.2008,  14:42 Найти цитируемый пост)
4. Найти пользователей, для которых не существует компании

Код
Select Name
from company_user
where company_id is null


Имена полей в таблицах и связи между таблицами получены мной телепатическим путем.

PM   Вверх
Agares
  Дата 15.7.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо большое! Возник вопросик:

Код

Select c.companyName, count(cp.id)
from company c
inner join company_product cp
on c.id=cp.company_id
group by c.companyName
order by c.companyName


что такое с ? Это связь? как можно ее посмотреть используя комманды sql?

---
Мне дали доступ на mysql через ssh.



--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
ТоляМБА
Дата 15.7.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(Agares @  15.7.2008,  16:10 Найти цитируемый пост)
что такое с 
это псевдоним таблицы Company, точно также как cp псевдоним таблицы company_product.
задаётся здесь:
Цитата(ТоляМБА @  15.7.2008,  15:34 Найти цитируемый пост)
from company c

и здесь
Цитата(ТоляМБА @  15.7.2008,  15:34 Найти цитируемый пост)
inner join company_product cp

что быстрее, написать
Select company_product.company_id, company_product.name, company_product.date...
или 
Select cp.company_id, cp.name, cp.date...
?


PM   Вверх
Agares
Дата 15.7.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



возникает вот такая ошибка:
Код

mysql> SELECT name, COUNT(cp.company_id)
    -> FROM company c
    -> INNER JOIN company_product cp
    -> on c.company_id=cp.company_id;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause


Добавлено через 11 минут и 20 секунд
хм.. добавил 
Код

group by c.companyName
order by c.companyName

и все заработало. я думал это сортировка...

Это сообщение отредактировал(а) Agares - 15.7.2008, 13:29


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
Agares
  Дата 15.7.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо большое за помощь!


--------------------
Мой ноут: Impression First 657
ОС: Gentoo Linux
PM MAIL WWW Skype GTalk   Вверх
ТоляМБА
Дата 16.7.2008, 06:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


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

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



Цитата(Agares @  15.7.2008,  16:21 Найти цитируемый пост)
я думал это сортировка...

сортировка во второй строке, в первой группировка - необходимая при применении агрегированных функций.

Это сообщение отредактировал(а) ТоляМБА - 16.7.2008, 06:07
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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