powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать запрос если его можно написать ?
18 сообщений из 18, страница 1 из 1
Помогите написать запрос если его можно написать ?
    #32363482
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица, есть числовое поле Х содержащее набор чисел,
необходимо выбрать строки, в которых в поле Х, повторяется значение не менне 3 раз.
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32363750
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:

Код: plaintext
1.
2.
3.
4.
SELECT ID,N FROM
(SELECT ID, COUNT(ID) as N
FROM TABLENAME
GROUP BY ID)
WHERE N>= 3 ;


...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32363794
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
select X from T group by X having count(*) >= 3 
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32363924
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот по мойму ты прогнал....
я присоеденяюсь ко второму автору :)
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32364338
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, работает (проверял), только как всегда первое решение не есть оптимальное. Со вторым решением полностью согласен - короче и изящнее.
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32364373
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM TABLE T1
WHERE (SELECT COUNT(*)
FROM TABLE T2
WHERE T1.FIELD = T2.FIELD) > 1

вот так -)
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32365387
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BlaX
А еще как извратиться можно?
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32365468
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переменная Х - не константа, тоесть, это множество !
еслибы константа, то другое дело.
И это не изварат -)
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32366448
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BlaX

Объясняю, в чем изврат. Операции >, <, = определены для скаляров. Использование их в предикате WHERE подразумевает сравнение скаляров для каждого кортежа (записи) из отношения (таблицы).
Результат же операции SELECT в общем случае - кортеж (или если угодно таблица NxM, включая значение NULL). В вашем конкретном случае это - скаляр, потому что используется агрегатная функция count() и на выхлопе вы имеете таблицу 1х1.

В результате: имеем потенциальное сравнение скаляра с кортежем (SELECT ...)>3, которое проходит только потому что SQL engine производит неявное приведение типов и преобразует кортеж размерности 1х1 в скаляр. Если у вас в результате SELECT-а случайно получится табличка не 1х1 - то посмотрите что получится. Имхо, это как раз то, что называется плохим тоном в программировании.

Самое правильное решение - то, в котором последовательно используется GROUP BY и HAVING. Оно, кстати, и самое короткое. :о)

...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32366563
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За что ценятся русские програмисты ?
за нестандаотность мышления.

Может я скорее всего не правильно поставил задачу или вопрос.

есть таблица

x y z
1 1 7
1 2 8
2 3 9
2 3 9
3 2 1
4 1 2
4 2 3
4 2 4
6 4 5
7 4 6
8 5 7


задача: выбрать только те строки таблицы, в которых Х повторяется во всей таблице
допустим, не меньше 3 раз !

т.е.

ответ
4 1 2
4 2 3
4 2 4

так что я неправильно поставил вопрос!

П.С. 90% - ошибок возникает на стадии проектирования!
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32366623
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем соб-но решение ЦК не устроило ?
____
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32366697
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное тем что X, Y, Z не показывало...

Код: plaintext
1.
2.
3.
SELECT * FROM TABLENAME WHERE X IN
(SELECT X FROM
(SELECT X, COUNT(ID) as N FROM TABLENAME GROUP BY X)
WHERE N>= 3 );


Код: plaintext
1.
SELECT * FROM TABLENAME WHERE X IN
(SELECT X FROM TABLENAME GROUP BY X HAVING COUNT(X)>= 3 );


...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367176
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
____
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367206
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT * FROM TABLENAME WHERE X IN
(SELECT X FROM TABLENAME GROUP BY X HAVING COUNT(X)>=3)


Я бы добавил еще для удобочитаемости

SELECT * FROM TABLENAME WHERE X IN
(SELECT X FROM TABLENAME GROUP BY X HAVING COUNT(X)>=3)
order by x

а может еще и distinct ?
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367210
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> а может еще и distinct ?

Неее... Лучше еще один group by . Так навороченнее получится, как у настоящих пацанов с барабаном Страдивари...

...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367214
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT distinct x,y,z FROM TABLENAME WHERE X IN
(SELECT X FROM TABLENAME GROUP BY X HAVING COUNT(X)>=3)
order by x


о - это оно, Кот - шарит в SQL, большое спасибо !!!

Век живи - век учись !
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367217
Фотография Циничный Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И дураком помрешь...
...
Рейтинг: 0 / 0
Помогите написать запрос если его можно написать ?
    #32367224
BlaX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Самый оптимальный вариант

SELECT distinct x,y,z FROM TABLENAME WHERE X IN
(SELECT X FROM TABLENAME GROUP BY X HAVING COUNT(X)>=3)
order by x

:-)


тема закрыта.

П.С. Знание- сила, сила есть - ума не надо, вывод на 0 делить нельзя.

всех с НГ !!!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Помогите написать запрос если его можно написать ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]