Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 19.06.2015
Сообщений: 14
1

Объединенный запрос

28.08.2015, 15:25. Показов 630. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть таблицы со следующими полями:
Таблица PAY:
PAY.CUSTOMER_ID
PAY.DATE
PAY.SUM
Таблица FEE:
FEE.CUSTOMER_ID
FEE.DATE
FEE.SUM
Таблицы совпадают только по CUSTOMER_ID, в остальный полях значения могут не совпадать.

Помогите составить запрос таким образом, чтобы в результате вывод был примерно таким:
|CUSTOMER_ID | FEE.DATE | PAY.DATE |
|------------------------------------------|
|____000001____|____01.01.2015____|____03.01.2015____|
|____000002____|____01.01.2015____|____null__________|
|____000003____|____null__________|____05.01.2015____|
|____000004____|____01.01.2015____|____null__________|
|____000004____|____01.02.2015____|____null__________|

Пробовал через JOIN в разный вариациях но значение в выводе дублируются многократно. В sql я не силен может кто-то подскажет, а то я уже готов сдаться
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2015, 15:25
Ответы с готовыми решениями:

Как создать верный объединенный запрос?
Здравствуйте, уважаемые форумчане. Знаю, вопрос не нов, но поиски по форуму особо успехом не...

Объединенный запрос с наименьшим количеством использования
Всем привет! В базе есть две таблицы MySQL, со следующей структурой. Первая таблица: Вторая...

Двухуровневое меню - Как сделать объединенный запрос?
Доброго времени суток. Есть такое меню: Меню1 Меню1_2 Меню1_3 Меню... Меню2

Объединенный запрос
Нужно выполнить такой запрос: Выполнить запрос, который получает названия подразделений,...

5
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
28.08.2015, 19:07 2
MySQL
1
2
3
4
5
6
7
8
9
SELECT ids.CUSTOMER_ID, FEE.DATE, PAY.DATE
FROM
(SELECT CUSTOMER_ID
FROM FEE
UNION
SELECT CUSTOMER_ID
FROM PAY) AS ids 
   LEFT JOIN FEE ON FEE.CUSTOMER_ID = ids.CUSTOMER_ID
   LEFT JOIN PAY ON PAY.CUSTOMER_ID = ids.CUSTOMER_ID
1
0 / 0 / 0
Регистрация: 19.06.2015
Сообщений: 14
31.08.2015, 10:28  [ТС] 3
_ViPeR_ Спасибо, но к сожалению это не работает. Результат запроса - 2665 записей где customer_id=1, что не соответствует действительности. Проверял так:
select FEE.DATE from FEE where FEE.CUSTOMER_ID='1', результат - всего 65 записей
0
80 / 73 / 25
Регистрация: 26.10.2010
Сообщений: 231
31.08.2015, 17:41 4
highroller,
это конечно хорошо, то что вы хотите сделать, но где связь между датами
PAY.DATE и FEE.DATE ? При том что CUSTOMER_ID связь между ними многие-комногим.

ИМХО. где то в этом деле еще должен затисаться ORDER_ID или что то подобное.
0
0 / 0 / 0
Регистрация: 19.06.2015
Сообщений: 14
31.08.2015, 17:54  [ТС] 5
В том-то и дело что связи между датами нет, такая уж база мне досталась Есть еще поля DOC_ID, но в них значения так же несовпадают.
Единственное что их объединяет поле ***.CUSTOMER_ID. Вообще конечная цель такова: получить разность SUM(PAY) и SUM(FEE). Есть еще таблица CUSTOMER с полем CUSTOMER_ID, если это как-то поможет...
0
80 / 73 / 25
Регистрация: 26.10.2010
Сообщений: 231
31.08.2015, 18:38 6
Цитата Сообщение от highroller Посмотреть сообщение
получить разность SUM(PAY) и SUM(FEE).
Это слегка другая задача, очень сильно отличается от описанного в начале ...

Как то так, синтаксис не проверял:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT 
        P.CUSTOMER_ID
    ,   P.PaySum
    ,   F.FeeSum
    ,   P.PaySum - F.FeeSum AS `DiffSum`
FROM (SELECT 
            CUSTOMER_ID
        ,   SUM(`SUM`) AS `PaySum`
        FROM PAY
        GROUP BY CUSTOMER_ID) AS P
LEFT JOIN (SELECT 
            CUSTOMER_ID
        ,   SUM(`SUM`) AS `FeeSum`
        FROM FEE
        GROUP BY CUSTOMER_ID) F 
    ON P.CUSTOMER_ID = F.CUSTOMER_ID
0
31.08.2015, 18:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.08.2015, 18:38
Помогаю со студенческими работами здесь

Как сделать CheckBox, объединенный с GroupBox-ом?
как сделать вот такой вот чекбокс объеденный с групбоксом

В имени папки указывается объединённый путь
Добрый день. есть структура хранения данных: папка 1 папка 2 папка 3 в папке 1 лежит вордовый...

Вернуть строку, содержащую объединенный текст из входных строк
помогите пожалуйста перевести код из си в си++ условие задачи : Функция получает массив указателей...

Acronis: При объединении томов выдало ошибку и объединенный раздел превратился в RAW
Жесткий диск размером 1 терабайт был как то изначально разделен на 3 тома под win7(80 гб), под win...


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

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