|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.03.2014, 07:35 | #1 |
Новичок
Джуниор
Регистрация: 02.09.2009
Сообщений: 2
|
Проблема в выборке из двух таблиц запросом SQL Server 2012
Добрый день, проблема в выборке из двух таблиц запросом SQL Server 2012:
Имеются 2 таблицы: Tabl1 и Tabl2 Tabl1: Name -----Pole1-----Pole2------Pole3----Pole4 Имя1-------1-------Город1-------1-------1 Имя1-------2-------Город1-------1-------1 Имя1-------3-------Город1-------1-------1 Имя1-------4-------Город1-------1-------1 Имя1-------5-------Город1-------1-------1 Имя2-------1-------Город1-------1-------1 Имя2-------2-------Город1-------1-------1 Имя2-------3-------Город1-------1-------1 Имя2-------4-------Город1-------1-------1 Имя2-------5-------Город1-------1-------1 Имя3-------1-------Город1-------1-------1 Имя3-------2-------Город1-------1-------1 Имя3-------3-------Город5-------1-------1 Tabl2: Name-----Pole1------Pole2-------Plan-----Fact Имя1-------1-------Город1-------10-------10 Имя1-------2-------Город1-------10-------10 Имя1-------3-------Город1-------10-------10 Имя1-------4-------Город1-------10-------10 Имя2-------3-------Город1-------10-------10 Имя3-------3-------Город1-------10-------10 Имя3-------4-------Город1-------10-------10 Имя3-------5-------Город5-------10-------10 При запросе: SELECT Tabl1.Name AS [Name], SUM(Tabl1.Pole3) AS [Pole3], SUM(Tabl1.Pole4) AS [Pole4], SUM( DISTINCT Tabl2.Plan) AS [Plan], SUM( DISTINCT Tabl2.Fact) AS [Fact] FROM Tabl1, Tabl2 WHERE (Tabl1.Name= Tabl2.Name) AND (Tabl1.Pole1 BETWEEN '2' AND '4') AND (Tabl2.Pole1 BETWEEN '2' AND '4') AND (Tabl1.Pole2=’Город1’) AND (Tabl2.Pole2=’Город1’) AND GROUP BY Tabl1.Name На выходе: Name ------Pole3------ Pole4----- Plan--------Fact Имя1--------9------------9--------30---------30 Имя2--------3------------3--------10---------10 Имя3--------4------------4--------20---------20 А должно быть по задумке: Name------Pole3-------Pole4------Plan--------Fact Имя1--------3------------3--------30---------30 Имя2--------3------------3--------10---------10 Имя3--------2------------2--------20---------20 Проблема в том, что именно Pole3 и Pole4 из Tabl1 суммируются и умножаются на кол-во совпавших записей из Tabl2, а нужны просто суммы столбов из двух таблиц сгруппированных по имени, по определенным критериям. Подскажите, где ошибся? (Полный запрос приведу, по необходимости) |
19.03.2014, 09:54 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,515
|
во второй таблице МНОГО (>1) строк соответствующих первой (Name=Имя1) в результирующем наборе (до группировки) будет много строк с ИМЯ1. (=число строк первого * число строк второго)
выведи набор без группировки и суммирования и посмотри Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 19.03.2014 в 10:02. |
19.03.2014, 10:04 | #3 |
Новичок
Джуниор
Регистрация: 02.09.2009
Сообщений: 2
|
Вопрос решен
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SQL Server 2012 ошибка установки. | kestugar | Софт | 2 | 10.03.2014 20:31 |
Установка MS SQL Server 2012 | Union programmer | SQL, базы данных | 10 | 18.05.2013 19:21 |
Доступ к microsoft sql server 2012 | fufel | БД в Delphi | 2 | 28.12.2012 16:07 |
SQL server 2012 error | Руслан Садаев | Помощь студентам | 0 | 04.12.2012 13:34 |
Получение данных из двух таблиц SQL Server а | S_Yevgeniy | БД в Delphi | 8 | 27.12.2009 15:12 |