Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Выбор id одной таблицы по трем полям другой (Vasily) 22/07/2013 - 16:26:54
      Re: Выбор id одной таблицы по трем полям другой (Akina) 23/07/2013 - 23:48:16
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 24/07/2013 - 11:38:20
      Re: Выбор id одной таблицы по трем полям другой (Akina) 26/07/2013 - 22:05:22
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 01/08/2013 - 11:55:46
      Re: Выбор id одной таблицы по трем полям другой (Akina) 05/08/2013 - 14:13:41
      Re: PS. (Akina) 05/08/2013 - 14:17:18
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 07/08/2013 - 12:08:35
      Re: Выбор id одной таблицы по трем полям другой (Akina) 07/08/2013 - 13:45:24
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 07/08/2013 - 15:35:22
      Re: Выбор id одной таблицы по трем полям другой (Akina) 07/08/2013 - 21:31:47
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 08/08/2013 - 10:16:54
      Re: Выбор id одной таблицы по трем полям другой (Akina) 08/08/2013 - 14:47:33
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 08/08/2013 - 18:09:32
      Re: Выбор id одной таблицы по трем полям другой (Akina) 08/08/2013 - 18:32:08
      Re: Выбор id одной таблицы по трем полям другой (Vasily) 08/08/2013 - 18:47:01

> Original message text:
> From: Vasily - 22/07/2013 - 16:26:54
> Subject:Выбор id одной таблицы по трем полям другой
> -----------------
> Здравствуйте. Прошу помочь с решением задачи, т.к. тривиальные решения не дали нужного результата и фантазия закончилась.
>
> Есть две таблицы: card(id, client, type) и histor(value, type, srv, enterdate). Столбцы type у обоих таблиц совпадают.
>
> Требуется: вывести один id из таблицы card для client = X, тот из них, у type которого максимальное значение value в таблице histor, по условию, что srv в ней должно быть равно Y, а enterdate старшая, но не больше Z.
>
> Возможно ли решение такой задачи одним запросом, или требуется проверка по циклу из perl-скрипта?
>


From: Akina - 05/08/2013 - 14:13:41
Subject:Выбор id одной таблицы по трем полям другой
-----------------
> Задача: Известен id клиента, на которого может быть записано
> несколько бланков разного типа. Известен тип услуги, на которую
> оформляется заказ. Известна дата оформления. Нужно найти id того
> бланка, из имеющихся у данного клиента, у которого максимальный
> тариф на день оформления.

Отлично. Теперь можно начинать думать.

Первое, что мы сделаем - это свяжем таблицы и получим одну большую.

SELECT c.id, c.client, c.type, h.id, h.srvtype, h.value, h.enterdate
FROM card c, histor h
WHERE c.type = h.crdtype

Далее - оставим только нужные нам данные по известным условиям отбора:

SELECT c.id, c.client, c.type, h.id, h.srvtype, h.value, h.enterdate
FROM card c, histor h
WHERE c.type = h.crdtype
AND c.id = :ID
AND h.srvtype = :SRVTYPE
AND h.enterdate <= :DATE

Как итог - мы получили сведения о всех бланках, записанных на нужного клиента и пригодных для нужного типа услуги, которые (теоретически) имелись у клиента на момент оформления. Осталось выбрать из них самый "свежий" - т.е. первый при сортировке по времени по убыванию:

SELECT h.id
FROM card c, histor h
WHERE c.type = h.crdtype
AND c.id = :ID
AND h.srvtype = :SRVTYPE
AND h.enterdate <= :DATE
ORDER BY h.enterdate DESC
LIMIT 1


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
42789



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |