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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> НЕОБЫЧНАЯ выборка 
V
    Опции темы
savmp
Дата 2.2.2012, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -2
Всего: -16



ЕСТЬ ВЫБОРКА из базы данных.

но она работает не так как нужно

SELECT * FROM TABLE WHERE (GO_A = '001' OR GO_B = '002') AND (TARIF = 'VIP' OR TARIF = 'FREE')

ЧТО нужно написать в место AND (я так думаю, что в место AND, возможно и нет) чтобы смысл выборки был таков:

ВЫБЕРИ * все поля из таблицы ГДЕ (GO_A = '001' OR GO_B = '002') И ИМЕННО ТЕ В КОТОРЫХ ЕСТЬ (TARIF = 'VIP' OR TARIF = 'FREE')

Я уже голову сломал... думая как это можно реализовать.

СО словом AND получается, что вытаскиваются и те и те...
А нужно вытаскивать только (GO_A = '001' OR GO_B = '002') у которых есть (TARIF = 'VIP' OR TARIF = 'FREE')

Добавлено через 13 минут и 20 секунд
Я не знаю... но возможно ли сделать выборку в выборке? Или как-то так?

Типа двойной выборки... вторая выборка выбирает из результата первой...

ИЛИ как-то так.

Добавлено через 14 минут и 37 секунд
Смешная идея, но всё таки!))

Это сообщение отредактировал(а) savmp - 2.2.2012, 22:43
PM MAIL ICQ   Вверх
Данкинг
Дата 2.2.2012, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Долго думал, так и не понял, чем не подходит написанный тобой запрос. Какие "и те, и те" выбираются?

Добавлено через 4 минуты и 37 секунд
Цитата(savmp @  2.2.2012,  23:42 Найти цитируемый пост)
но возможно ли сделать выборку в выборке?

Суть та же будет:
Код

SELECT * from test WHERE tarif in (SELECT tarif FROM test WHERE (TARIF = 'VIP' OR TARIF = 'FREE')) and (GO_A = '001' OR GO_B = '002') 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
tzirechnoy
Дата 2.2.2012, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Написанный запрос должэн работать именно так, как Вы и описали.
PM MAIL   Вверх
savmp
Дата 2.2.2012, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 260
Регистрация: 27.7.2009
Где: Геленджик

Репутация: -2
Всего: -16



Цитата(tzirechnoy @ 2.2.2012,  23:44)
Написанный запрос должэн работать именно так, как Вы и описали.

НЕТ!))

SELECT * FROM TABLE WHERE (GO_A = '001' OR GO_B = '002') AND (TARIF = 'VIP' OR TARIF = 'FREE')

ВОТ ЭТОТ ЗАПРОС РАБОТАЕТ НА ВСЕ 100%

НО он вытаскивает не то, что нужно...

В этом запросе вытаскиваются ВЫТАШИ (GO_A = '001' OR GO_B = '001') И (TARIF = 'VIP' OR TARIF = 'FREE')

А НУЖНО

(GO_A = '001' OR GO_B = '002') У КОТОРЫХ (TARIF = 'VIP' OR TARIF = 'FREE')


ТАБЛИЦА

ID     GO_A        GO_B     TARIF

1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

Добавлено @ 23:59
Если к этой таблице:

ID     GO_A        GO_B     TARIF

1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

ИСПОЛЬЗОВАТЬ МОЙ ЗАПРОС:

SELECT * FROM TABLE WHERE (GO_A = '001' OR GO_B = '001') AND (TARIF = 'VIP' OR TARIF = 'FREE')

ТО мы получим:
1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP


А НУЖНО ПОЛУЧИТЬ
1       001          001        VIP
4       003          001        FREE




Это сообщение отредактировал(а) savmp - 3.2.2012, 00:02
PM MAIL ICQ   Вверх
Данкинг
Дата 3.2.2012, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Запрос:
Код

SELECT * FROM test WHERE (GO_A = '001' OR GO_B = '001') AND (TARIF = 'VIP' OR TARIF = 'FREE')

Результат:
user posted image



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akina
Дата 3.2.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(savmp @  3.2.2012,  00:53 Найти цитируемый пост)
Если к этой таблице:

ID     GO_A        GO_B     TARIF

1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

ИСПОЛЬЗОВАТЬ МОЙ ЗАПРОС:

SELECT * FROM TABLE WHERE (GO_A = '001' OR GO_B = '001') AND (TARIF = 'VIP' OR TARIF = 'FREE')

ТО мы получим:
1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

 smile Быть не может... Назовите СУБД.

Добавлено через 1 минуту и 19 секунд
Цитата(savmp @  3.2.2012,  00:53 Найти цитируемый пост)
Если к этой таблице:

ID     GO_A        GO_B     TARIF

1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

ИСПОЛЬЗОВАТЬ МОЙ ЗАПРОС:

SELECT * FROM TABLE WHERE (GO_A = '001' OR GO_B = '001') AND (TARIF = 'VIP' OR TARIF = 'FREE')

ТО мы получим:
1       001          001        VIP
2       001          004        ECONOM
3       003          002        VIP
4       003          001        FREE
5       002          002        VIP

 smile Быть не может... Назовите СУБД. 


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

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


Новичок



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

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



в скобочки возьмите всё, после where.  судя по скриншоту вы делаете выбрку не с and а с or между скобками

Это сообщение отредактировал(а) ndbn - 9.2.2012, 22:31
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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