|
MySQL.RU - Webboard
Вернуться
Сломал голову на ситуации (Abyrvalg) 21/02/2014 - 23:56:24
Re: Сломал голову на ситуации (Akina) 22/02/2014 - 13:21:16
Re: Сломал голову на ситуации (Abyrvalg) 22/02/2014 - 15:50:34
Re: За чё спасиба-то? (Akina) 23/02/2014 - 21:32:56
Re: Сломал голову на ситуации (Ar) 06/06/2014 - 15:14:51
From: Abyrvalg - 21/02/2014 - 23:56:24
Subject:Сломал голову на ситуации
-----------------
Привет тебе, неустрашимый All!
Вводная:
*) Есть табличка с двумя полями. Для простоты будем считать, что в первом поле - число, во втором - дата.
*) Оба поля неуникальны.
*) Притом второе поле может применять значение null. Но только единожды для каждого значения первого поля. Будем считать, к примеру, что поле f2 - это дата закрытия аренды некоего волшебного номера f1. Если для заданного f1 существует значение f2 = NULL, значит, данный f1 используется. Если же все значения f2 для него ненулевые, то значит, данный f1 использовался N раз (N = числу рядов) и в данный момент не используется.
Пример такой таблицы test с полями f1, f2:
5 2014-01-01
8 2014-02-02
8 2014-02-20
10 2013-12-16
10 NULL
12 2013-12-23
12 2014-01-30
12 NULL
и т.п.
Задача найти все "активные" f1 элементарна: для этого надо всего лишь выселектить те значения, у которых f2 = NULL:
SELECT f1 FROM test WHERE f2 IS NULL
А вот обратная задача - найти все "неактивные" f1 - заставила меня залипнуть. В конце концов, конечно, можно извратиться вложенным запросом "от противного":
SELECT f1 FROM test WHERE f1 NOT IN (SELECT f1 FROM test WHERE f2 IS NULL)
но не оставляет тревожное ощущение корявости и уродливости этой конструкции. Такое ощущение, что есть что-то гораздо более изящное и правильное, а я проглядел...
Подскажите, пожалуйста, развейте сомнения...
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43150
|
|