Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL Запрос c условием, хитрым 
:(
    Опции темы
TBD
Дата 8.6.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Привет всем.....

Вот есть таблица tabl в ней поле  rez 
Нужно выбрать записи у которых rez = "MAX" ( текстовое значение) и если таких значений меньше 10, то
необходимо довыбрать оставщиеся данные чтоб было 10 значений.
Rez например может быть -> "MAX" или любым числом...

Как составить? smile 
 
PM MAIL   Вверх
skyboy
Дата 8.6.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Код

SELECT * FROM tabl WHERE rez="MAX"
UNION
SELECT * FROM tabl WHERE NOT(rez="MAX")
LIMIT 10
 
PM MAIL   Вверх
TBD
Дата 8.6.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Пасиб skyboy

А почему у меня JetSql ругается на LIMIT 10?
Пишет ошибка синтаксиса 

как сделать это же только без limit?
   

Это сообщение отредактировал(а) TBD - 8.6.2006, 23:24
PM MAIL   Вверх
skyboy
Дата 8.6.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



TBD, оп-а smile Тогда СУБД не работает с ограничением на количество(если опечатки не было) и 10 отбирать тебе придётся из всех записей. Одно хорошо - имеешь порядок нужный.   

Это сообщение отредактировал(а) skyboy - 8.6.2006, 23:29
PM MAIL   Вверх
TBD
Дата 8.6.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Млин фигово.....
Если вдруг кто знает отпишите плз. smile  
PM MAIL   Вверх
ТоляМБА
Дата 9.6.2006, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Код

Select TOP 2 *
from Table1
Order by Field1
Выбирает 2 первые строки из таблицы отсортированные по полю Field1. Припаивай TOP к своему запросу и вперёд! 
PM   Вверх
Akina
Дата 9.6.2006, 08:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Т.е.

Код

Select Top 10 
From
(
    SELECT * 
    FROM tabl 
    WHERE rez="MAX"
  UNION
    SELECT * 
    FROM tabl 
    WHERE NOT(rez="MAX")
)
Order By Iif(rez="MAX",0,1) 
 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 9.6.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



м. Если делать ORDER, то можно обойтись и без WHERE в явном виде smile
 
Код

Select Top 10    
From    
(    
    SELECT tabl.*,(rez="MAX") as Flag
    FROM tabl    
    WHERE rez="MAX"    
    Order By Flag
)    

Вот только не знаю, насколько это близко духу SQL Access'a smile 
PM MAIL   Вверх
Akina
Дата 9.6.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(skyboy @  9.6.2006,  12:16 Найти цитируемый пост)
не знаю, насколько это близко духу SQL Access'a 
Да, Аксессу надо такое:
Код
Select Top 10 *, Iif(rez="MAX",0,1) As Flag
FROM tabl 
Order By Iif(rez="MAX",0,1)
но это добавляет лишнее нафиг ненужное поле... впрочем накладнЫе расходы невелики.  


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
TBD
Дата 9.6.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Пасиб ребята за ответы smile ...
Теперь буду пробовать, что тут да как работает. 
 
PM MAIL   Вверх
Akina
Дата 9.6.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



TBD, учти, если у тебя более 10 записей, удовлетворяющих условию - незвестно какие именно будут выданы. Так что добавь второй критерий сортировки в запрос на всякий случай - после iif. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
TBD
Дата 9.6.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Да не все нормально только нерадует то, что цифровые значения в текстовом поле воспринимаются криво.
Типа "5" > "35" smile 
 
PM MAIL   Вверх
Akina
Дата 10.6.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(TBD @  9.6.2006,  22:52 Найти цитируемый пост)
нерадует то, что цифровые значения в текстовом поле воспринимаются криво.

В текстовом поле хранятся текстовые значения. И если тебе нужны были числа, а ты сделал текст - то из вас двоих кривизна ну никак не у Аксесса.

Вместо order by SomeField используй order by Val(SomeField) 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
TBD
Дата 11.6.2006, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2006

Репутация: нет
Всего: нет



Ого=)......до Val еще не дошел
Значит попробуем....
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0612 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.