powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос из двух таблиц
8 сообщений из 8, страница 1 из 1
Запрос из двух таблиц
    #39192066
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, составить правильный запрос по следующим данным -

таблица t1 (список дел) имеет поля:
'id' - дело
'awarded_date' - дата принятия решения.

таблица t2 (оплаты по делам) имеет поля:
'case_id' - id делa
'case_id2' - id делa (т.к. часть оплаты может идти на другое дело)
'payment_date' - дата оплаты
'sum_payment' - оплата по 1-му делу
'sum_payment2' - оплата по 2-му делу
записей оплат может быть несколько на каждое дело.

В запросе надо выбрать все дела и суммы оплат, которые были по каждому делу до даты принятия решения.
Что-то типа такого (нерабочее):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT id,awarded_date,sum_by_id
FROM t1
LEFT JOIN
	(SELECT case_id,case_id2,SUM(CASE WHEN (case_id=t1.id) THEN sum_payment ELSE 0 END)+SUM(CASE WHEN (case_id2=t1.id) THEN sum_payment2 ELSE 0 END) sum_by_id
	FROM t2
	WHERE payment_date<t1.awarded_date
	) t
ON (t.case_id=t1.id OR t.case_id2=t1.id)
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192073
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
структуру второй таблицы сочинял тот же надмозг, который придумывал задачки для sql-ex?
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192076
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirструктуру второй таблицы сочинял тот же надмозг, который придумывал задачки для sql-ex?
БД такая досталась по наследству :(
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192083
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишите 2 отдельных запроса - по case_id и по case_id2, и ссуммируйте их.
Хотя много лучше - нормализовать таблицу t2.
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192234
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
ок, забудем про case_id2, но даже так не могу составить рабочий запрос. У меня затык в
Код: sql
1.
SUM(CASE WHEN (case_id=t1.id) THEN sum_payment ELSE 0 END)


как передать в JOIN значение t1.id? Да и на t1.awarded_date ругается...
Не поможете с запросом? Что писать в JOIN, не понимаю :(
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT id,awarded_date,sum_by_id
FROM t1
LEFT JOIN
	(SELECT case_id,case_id2,SUM(CASE WHEN (case_id=t1.id) THEN sum_payment ELSE 0 END) sum_by_id
	FROM t2
	WHERE payment_date<t1.awarded_date
	) t
ON t.case_id=t1.id
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192313
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, это я затупил... JOIN вообще не нужен. Вот так все считает и вроде даже правильно :)
Код: sql
1.
2.
3.
4.
5.
6.
SELECT id,awarded_date,
	(SELECT SUM(CASE WHEN (case_id=t1.id) THEN sum_payment ELSE 0 END) 
	FROM t2
	WHERE payment_date<awarded_date
	) sum_by_id
FROM t1


Поправьте, если что-то не так.
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192319
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LiYingУ меня затык вУ Вас, извините за грубость, незнание самых минимальных основ, усугублённое нежеланием понять, что Вам ответили, а вовсе даже не затык.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SELECT t1.id, SUM(payments.payment) payment
FROM t1
LEFT JOIN
(
    SELECT t1.id id, SUM(t2.sum_payment) payment
    FROM t1, t2
    WHERE t1.id=t2.case_id
      AND t1.awarded_date>t2.payment_date
    GROUP BY t1.id
  UNION ALL
    SELECT t1.id, SUM(t2.sum_payment2)
    FROM t1, t2
    WHERE t1.id=t2.case_id2
      AND t1.awarded_date>t2.payment_date2
    GROUP BY t1.id
) payments 
  ON t1.id=payments.id
GROUP BY t1.id


Ежели где недостаток алиасов (ambiquous reference) - добавите самостоятельно.
Писано от руки, возможны ошибки. Разберётесь в логике - исправите.
...
Рейтинг: 0 / 0
Запрос из двух таблиц
    #39192348
LiYing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Спасибо, буду разбираться.
Насчет остального:
1) структуру БД нельзя трогать, потому про нормализацию можно забыть.
2) про два отдельных запроса - да, не понял, что Вы имели в виду, извините.
3) незнание самых минимальных основ - БД и запросы несколько не моя специализация, но вынужден заниматься. Потому и прошу помощи на форуме и учусь, разве не для этого они (форумы) созданы?
В любом случае, благодарю за урок.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос из двух таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]