Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
1
SQLite

Выборка из трех таблиц с функцией count()

06.05.2015, 10:30. Показов 1582. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня имеется три таблицы, связанные внешним ключами:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE office(id_office INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
address TEXT NOT NULL, email TEXT NOT NULL);
 
CREATE TABLE manager(id_manager INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
FIO TEXT NOT NULL, id_office INTEGER NOT NULL, FOREIGN KEY(id_office) REFERENCES office (id_office));
 
CREATE TABLE selling(id_selling INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
DATE TEXT NOT NULL,amount INTEGER NOT NULL,
sum_of_sale INTEGER NOT NULL,comment TEXT ,
number_of_disk INTEGER NOT NULL, id_goods INTEGER NOT NULL,
id_manager INTEGER NOT NULL, FOREIGN KEY(id_goods) REFERENCES goods(id_goods),
FOREIGN KEY(id_manager) REFERENCES manager(id_manager));
По заданию нужно вывести продаваемость по офисам. Я так понимаю, что требуется вывести допустим адрес офиса и кол-во продаж из него (подсчитать id_selling)
пишу следующий запрос, но он работает не корректно, если к одному офису относится больше одного менеджера:
SQL
1
2
3
4
5
6
SELECT  o.id_office AS io, o.address, 
       COUNT(selling.id_selling) 
       FROM office AS o
       JOIN selling 
       ON selling.id_manager = (SELECT manager.id_manager FROM manager WHERE
       manager.id_office=io)  GROUP BY o.address;
Как решить эту проблему, помогите ,пожалуйста!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2015, 10:30
Ответы с готовыми решениями:

Выборка из трех таблиц
Есть три модели для Codefirst: public class Client { public int ClientId { get; set;...

Выборка из двух таблиц с использованием count(*)
Наткнулся на вот такую проблему, бьюсь уже неделю:( Суть проблемы: Есть две таблицы. В одной...

Выборка из трех таблиц
Здравствуйте, помогите, пожалуйста, написать запрос, даны три таблицы, должники(debtors),...

Выборка из трех таблиц
Есть три таблицы: Таблица TOVAR (продукты) id товара|Название 22|Хлеб 23|Соль 24|Мука...

5
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
06.05.2015, 10:43 2
Цитата Сообщение от sherbakova96 Посмотреть сообщение
нужно вывести продаваемость по офисам.
Не могли бы вы пояснить, что означает продаваемость по офисам и какое отношение к ней имеют менеджеры?
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
06.05.2015, 11:02  [ТС] 3
Не знаю, что имел ввиду преподаватель, но я понимаю продаваемость по филиалам как вывод адреса филиала и количество зарегистрированных продаж из него.
т.е. office.address и count(selling.id_selling)
таблица selling связана с таблицей manager по id_manager, а manager в свою очередь с таблицей office по id_office. Вот причем менеджер. Продажи производит менеджер. Но в офисе их может быть несколько, мой запрос это не учитывает и считает неверно.
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
06.05.2015, 13:33 4
Лучший ответ Сообщение было отмечено kolorotur как решение

Решение

Цитата Сообщение от sherbakova96 Посмотреть сообщение
таблица selling связана с таблицей manager по id_manager, а manager в свою очередь с таблицей office по id_office.
Ага, понятно.

Вот так сработает?
SQL
1
2
3
4
5
6
7
8
9
10
SELECT o.id_office, o.address, COUNT(s.id_selling)
FROM office AS o
 
JOIN manager AS m
  ON m.id_office = o.id_office
 
LEFT JOIN selling AS s
  ON s.id_manager = m.id_manager
 
GROUP BY o.id_office, o.address
0
0 / 0 / 0
Регистрация: 03.05.2015
Сообщений: 5
06.05.2015, 14:06  [ТС] 5
да, заработало, спасибо!)
0
Эксперт .NET
17790 / 12941 / 3381
Регистрация: 17.09.2011
Сообщений: 21,215
06.05.2015, 14:13 6
sherbakova96, на здоровье.
Исправьте немного запрос, чтобы с таблицей manager тоже был LEFT JOIN — тогда в результате будут отображаться офисы без менеджеров, если вдруг такая ситуация возникнет.
0
06.05.2015, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2015, 14:13
Помогаю со студенческими работами здесь

Выборка из трех таблиц
Добрый день. Есть три таблицы: t1: id | col11 | col12 | col13| col14 t2: id |col21 | col22 |...

Выборка из трех таблиц
Помогите пожалуйста, необходимо сделать выборку из трех таблиц. Допустим, чтобы при выборе...

Выборка из трех таблиц
Здравствуйте, нужна помощь, есть 3 таблицы мне нужно все в кучу слепить чтобы вывод имен был как на...

Выборка из трех таблиц
Доброго времени суток БД Paradox, компонент Query Есть 3 таблицы Table1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru