powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос
7 сообщений из 7, страница 1 из 1
Сложный запрос
    #32787775
Alex Hemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется таблица

ОБЪЕКТ_ID | ГОРОД_ID | НАЗВАНИЕ

и справочник городов

ГОРОД_ID, НАЗВАНИЕ

т.е. каждый объект приписан к какому-либо городу

для вывода анонсов нужно выбрать ОДНИМ ЗАПРОСОМ несколько записей, таким образом, чтобы по каждому городу их оказалось ровно N и они были "первые" в заданном порядке сортировки (например дата добавления).

Причем если их в таблице меньше чем N - то должны быть все соответственно

Сейчас я придумал так - нужно выбрать из таблицы городов все записи, потом как-то СДУБЛИРОВАТЬ их N раз и потом сделать LEFT JOIN с таблицей объектов.

Вот с чем их декартово перемножить, чтобы число строк увеличилось ровно в N раз не представляю.
...
Рейтинг: 0 / 0
Сложный запрос
    #32787938
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты можешь использовать временную таблицу и запихивать туда ID в несколько запросов для каждого города, а потом от туда выбиарть!

А можешь сделать вычисляемое поле где будешь складывать номер города и порядковый номер записи, а потом использовать HAVING.

Более подробно некогда объяснять. Завтра!

Код: plaintext
.mahoune
...
Рейтинг: 0 / 0
Сложный запрос
    #32802768
Gena_Israel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
идея состоит в использовании rownum декартого произведения любой таблицы на саму себя (и так нескоько раз),чтобы получить сколь-угодно большое число,затем посредством ограничения rownum <= N получить искомые строчки заданное к-во раз. Нижеприведенный код выдает "одинаковые" строчки N раз:

select rownum,
город_id,
название города
from таблица
where
rownum in (select rownum from таблица,таблица,таблица)
and rownum <= N
...
Рейтинг: 0 / 0
Сложный запрос
    #32802769
Gena_Israel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select rownum,
город_id,
название города
from таблица
where
rownum in (select rownum from таблица,таблица,таблица)
and rownum <= N

разумеется для данного горада город_id=m, т.е.

select rownum,
город_id,
название города
from таблица
where
rownum in (select rownum from таблица,таблица,таблица)
and rownum <= N
and город_id= m
...
Рейтинг: 0 / 0
Сложный запрос
    #32802914
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select * from (select ГОРОД_ID as ы, НАЗВАНИЕ from города
where ы in (select ГОРОД_ID from города,города...)) left join объекты
on (объекты.ГОРОД_ID=ы) where объекты.ГОРОД_ID is not null;
...
Рейтинг: 0 / 0
Сложный запрос
    #32816071
kronius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не так силен в мускуле, как многоие тут. Поэтому прошу не рычать на мой вопрос... ;)

Вопрос по аналогичной теме, но с более изощренной структурой базы:
Есть три таблицы:
категории (cat),
c_id (ключ)
c_name (название)
ln (язык)
группы (grp),
g_id (ключ)
g_key_c (связывание с категориями)
g_name (название)
ln (язык)
елементы (itm)
i_id (ключ)
i_key_g (связывание с группами)
i_name (название)

Примерно так... т.е. елементы не связаны напрямую с категориями .... Ну и нужен запрос на аннонс трех последних из каждой категории для конкретного языка. Спасибо.
...
Рейтинг: 0 / 0
Сложный запрос
    #32816523
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит "последний"?

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


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