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