Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1228155464
antonn
2008-12-01 21:17
2009.01.18
название скринсейвера


1-1205913105
Aleksandr
2008-03-19 10:51
2009.01.18
dll, получить события самого приложения


2-1228464468
1234567
2008-12-05 11:07
2009.01.18
MB_ICONINFORMATION


15-1226985886
Virgo_Style
2008-11-18 08:24
2009.01.18
Тем, кто пользуется ZoneAlarm


2-1228379285
linx
2008-12-04 11:28
2009.01.18
Функция округления до данного знака.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский