![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужнапомощь с запросом
Suntechnic © (2008-12-06 00:14:00)Друзья, помогите с запросом плз, не въезжаю как... Есть набор вроде этого:
B D
1 14
1 15 *
2 15 *
2 25
3 1
3 15 *
3 20
4 15 *
4 15 *
4 20
5 15 *
5 20
Нужно получить все пары "B","D" *, в которых присутствует повторяющееся во всем наборе число, в данном случае это число D = 15. Это число - искомое, поэтому where никак не годится. Известно только, что в пределах каждогозначения "B" оно обязательно повторяется один или боле раз.
Palladin (2008-12-06 17:07:00) [1]
> Table несъедобный
здесь, вообще говоря, должно было быть имя твоейтаблицы
разве это не очевидно?
other Suntechnic (2008-12-06 17:04:00) [2]Ну ладно, T1, T2, T3 - псевдонимы. Table несъедобный, убрал - ругается на отсутствие указанных таблиц. В общем, идея понятна, переделаю. Спасибо всем!
P.S. Последний раз был на этом форуме уж не помню, года три назад - а имена всё те же! Респект вашему приверженству, господа!
sniknik (2008-12-06 16:14:00) [3]> вот только почему-то синтакс оказывается несъедобным для Access.
синтаксис у всех разный, чего бы там не говорили о совместимости и стандарты...
Palladin (2008-12-06 15:28:00) [4]псевдомы для таблиц и выборок
other Suntechnic (2008-12-06 15:21:00) [5]Прошу прощения за некоторый игнор своего поста.
Насколько я понял, задача имеет относительно несложное решение, вот только почему-то синтакс оказывается несъедобным для Access. С чем едят Table T1, Table T2 и "Table) T3"?
Palladin (2008-12-06 14:56:00) [6]
> (SELECT DISTINCT B,D FROM Table) T3 WHERE T3.D=T1.D
ВО! :) до чего я не додумался, решил пихнуть условие внутрь distincta, а до вынесения его повыше не допер... )
sniknik (2008-12-06 14:31:00) [7]> нехотИт access работать с distinct внутри count
можно решить переписав так
SELECT * FROM Table T1
WHERE
(SELECT Count(*) FROM (SELECT DISTINCT B FROM Table T2)) =
(SELECT Count(*) FROM (SELECT DISTINCT B,D FROM Table) T3 WHERE T3.D=T1.D)
Palladin (2008-12-06 12:34:00) [8]
> Johnmen © (06.12.08 11:53) [7]
тоже сначала так подумал, нехотИт access работать с distinct внутри count
Johnmen (2008-12-06 11:53:00) [9]
> Palladin © (06.12.08 10:53) [6]
Понятно.
Тогда примерно так:
SELECT * FROM Table T1
WHERE
(SELECT COUNT(DISTINCT T2.B) FROM Table T2) =
(SELECT COUNT(DISTINCT CAST(T3.B AS VARCHAR(16))||'+'||CAST(T3.D AS VARCHAR(16)))
FROM Table T3 WHERE T3.D=T1.D)
Palladin (2008-12-06 10:53:00) [10]
> Johnmen © (06.12.08 10:48) [5]
нет, 20 не канает, ему нужно найти число которое принадлежит всем из select distinct b
Johnmen (2008-12-06 10:48:00) [11]
> Нужно получить все пары "B","D" *, в которых присутствует
> повторяющееся во всем наборе число, в данном случае это
> число D = 15.
А, кроме того, ещё и 20.
Поэтому формулируй вопрос ещё раз.
other Suntechnic (2008-12-06 01:35:00) [12]БД в данном случае Access, если необходимо - пойду на MS SQL, вероятно, компакт.
Спок ночи!
Германн (2008-12-06 01:28:00) [13]
> other Suntechnic (06.12.08 01:14) [2]
>
> Наверное, не тот;) Насчет количества запросов - главное
> результат, конечно
>
Уже понял что "не тот".
Тогда уточни какую БД ты пользуешь.
Но ответ ожидай только утром и далее. Ночью тут некому решать такие задачи.
other Suntechnic (2008-12-06 01:14:00) [14]Наверное, не тот;) Насчет количества запросов - главное результат, конечно
Германн (2008-12-06 01:01:00) [15]Одним запросом?
P.S. А ты тотSuntechnic?