Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ВЛИП ! / 25 сообщений из 34, страница 1 из 2
27.11.2004, 17:53
    #32802580
BiZone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Всем привет! То ли я, то ли mysql не можем разрулить вдоде бы простую ситуацию: Есть таблица:

Города |Номера
------ |------
Москва|1
Питер |2
Киев |3
Минск |8
Бостон |6

Требуется: выбрать города, номера которых например соответствуют 1,8,6 (т.е. Москва, Минск, Бостон).

Казалось бы вроде все просто, и хочеться использовать такой запрос: SELECT города FROM таблица WHERE номера='1' AND номера='8' AND номера='6';

Но mysql не реагирует на это !? - он говорит, что такого мол нет и хоть ты тресни!

Он может выбрать только при одном условии: например WHERE номера='1' и ВСЕ!!! ПОДСКАЖИТЕ, КАК ВЫЙТИ ИЗ ЭТОЙ СИТУАЦИИ ? Заранее спасибо.
...
Рейтинг: 0 / 0
27.11.2004, 18:18
    #32802587
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Конечно в базе нет городов с номером 1 И 8 И 6...
Зато есть города с номером 1 ИЛИ 8 ИЛИ 6 ,)
Тяжёлый день вышел?)
...
Рейтинг: 0 / 0
27.11.2004, 18:19
    #32802588
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
ну, как может быть сразу у одного города id равен 1,8 и 6?
он может быть либо 1, либо 8, либо 6
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
27.11.2004, 18:20
    #32802589
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
SELECT города FROM таблица WHERE номера='1' or номера='8' or номера='6';
выберет три записи))
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
27.11.2004, 19:21
    #32802606
BiZone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Хммм... Ok, но ведь можно же выбрать список городов используя например BETWEEN ? Например если сделать так: SELECT города FROM таблица WHERE номера BETWEEN 5 AND 10; РЕЗУЛЬТАТ-> Минск, Бостон. И почему бы не сделать тогда: WHERE города=6 AND города=8 для получения Минска и Бостона ? Кроме того можно сделать и так:
WHERE номера!==1 AND номера!==2 AND номера!==2; Результат - тот же.
По моему это позорная недоработка разработчиков MySQL'я, а ?
...
Рейтинг: 0 / 0
27.11.2004, 19:46
    #32802613
tana
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
потому что Between выбирает (min < = expr AND expr < = max), а не =.
Что касается позорной недоработки - вспомните, плиз, булеву алгебру.
...
Рейтинг: 0 / 0
27.11.2004, 20:41
    #32802626
BiZone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Фуууу... Кто то мне говорил, что у меня проблемы с логикой, кто то даже предлагал мне вспомнить булеву алгебру! Но так ни кто и не ответил мне - как выбрать города с определенными номерами. Может быть все таки найдется крууутой специалист который поможет мне разобраться в моей сложившейся ситуации ? Заранее спасибо !
...
Рейтинг: 0 / 0
27.11.2004, 21:04
    #32802640
BiZone
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
[quot Lelikk]ну, как может быть сразу у одного города id равен 1,8 и 6?
он может быть либо 1, либо 8, либо 6
________________________________________________________
Я не ничего не говорил про уникальность записей, при отношении "многое ко многим" в MySQL используются промежуточные таблицы, и поэтому у городов могут быть разные номера, например:

Города|Номера
---------------
Москва|1
Москва|8
Питер |2
Москва|6
...
Рейтинг: 0 / 0
28.11.2004, 08:31
    #32802733
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Внимательно читай первые три ответа и будет тебе счастие.
...
Рейтинг: 0 / 0
28.11.2004, 10:08
    #32802744
Gena_Israel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
select город
form таблица
where номер in ('1','8','6')
...
Рейтинг: 0 / 0
29.11.2004, 15:43
    #32804272
Uncle S@M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
лол, просто лол
...
Рейтинг: 0 / 0
29.11.2004, 19:40
    #32804774
swept
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
я повеселился, читая этот топик
...
Рейтинг: 0 / 0
30.11.2004, 12:18
    #32805473
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Да, действительно смешно... Хотя честно говоря когда у меня только комп появился (году в 94-м где-то), я был таким же лохом и наталкивался на такую же "проблему":-)
...
Рейтинг: 0 / 0
13.12.2004, 18:23
    #32825685
LaVei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
BiZoneХммм... Ok, но ведь можно же выбрать список городов используя например BETWEEN ? Например если сделать так: SELECT города FROM таблица WHERE номера BETWEEN 5 AND 10; РЕЗУЛЬТАТ-> Минск, Бостон. И почему бы не сделать тогда: WHERE города=6 AND города=8 для получения Минска и Бостона ? Кроме того можно сделать и так:
WHERE номера!==1 AND номера!==2 AND номера!==2; Результат - тот же.
По моему это позорная недоработка разработчиков MySQL'я, а ?

Кстати есть мнение что эта недоработка имеет место быть и в других СУБД...
Сейчас протестировал PostgreSQL - таже фигня.;-(
...
Рейтинг: 0 / 0
13.12.2004, 21:47
    #32825796
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
LaVei, это НЕ недоработка!!! Это логика! И попробуй мыслить логически, не позорь мужской род:-)
...
Рейтинг: 0 / 0
14.12.2004, 15:17
    #32826908
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Вы все только смеетесь, а помочь никто так и не помог ;(
Мне вот тоже интересно, какой запрос сделать, чтобы получить города И с id=1 , И с id=6, И с id=8.
...
Рейтинг: 0 / 0
14.12.2004, 15:51
    #32827020
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
tajВы все только смеетесь, а помочь никто так и не помог ;(
Мне вот тоже интересно, какой запрос сделать, чтобы получить города И с id=1 , И с id=6, И с id=8.
ВОТ:
LelikkSELECT города FROM таблица WHERE номера=1 or номера=8 or номера=6;
выберет три записи)).

Используй иструкцию ИЛИ и жизнь покажется раем!
...
Рейтинг: 0 / 0
14.12.2004, 16:37
    #32827140
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
RFT, так если я напишу ИЛИ, он мне и выдаст ИЛИ то ИЛИ другое! А мне надо И то И другое!

Мне кажется, здесь может помочь только временная таблица-справочник... :(
К примеру,
Код: plaintext
1.
2.
3.
4.
create temporary table t1 (id int);
insert into t1 set id= 1 ;
insert into t1 set id= 6 ;
insert into t1 set id= 8 ;
select * from cities right join t1 on citynumber=id;
Конечно, корявое решение, но куда деваться, если разработчики MySQL не смогли предоставить нам ничего более изящного :(
...
Рейтинг: 0 / 0
14.12.2004, 16:55
    #32827197
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
%лять, ну как же тебе объяснить-то!!!
В записи типа Город|ID поле ID может быть ТОЛЬКО одного значения: или 1, или 6, или 139 нафик! В нем НЕ может быть одновременно и 1 и 6 и 139. При выборе Select будет проверять:
- при условии И: он ищет те записи, где одновременно ID равен И 1 И 6 И 139
- при условии ИЛИ: ище те записи, в которых ID может встретиться ИЛИ 1 ИЛИ 6 ИЛИ может быть даже 139.
Доступно? Или в школу на повторное обучение пойдешь?
...
Рейтинг: 0 / 0
14.12.2004, 17:04
    #32827222
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
гм... ну а как же мне тогда... вот мне нужно скажем 6, ты пишешь -
RFT- при условии ИЛИ: ище те записи, в которых ID может встретиться ИЛИ 1 ИЛИ 6 ИЛИ может быть даже 139.
а вдруг он мне вернет где 1 или даже 139, а мне ведь нужно где 6?

--
Wo siang nide fanvan li ty le tang!(кит.:Я плюнул вам в рис, теперь вы умрёте!)
подпись сперта у перца с другого форума, но все равно красиво
...
Рейтинг: 0 / 0
14.12.2004, 17:08
    #32827235
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
1,6 и 139 - это для примера цифры. Ты можешь перечислить их любое кол-во. Если тебе нужно ТОЛЬКО 6, то так и поставь: ...where id=6. Если тебе нужны те записи, в которых ID может быть не только 6, а что-нибудь еще, то пиши:
where id=<что-то> or id=<что-то еще> or id=<что-то еще третье> or id=<что-то еще четвертое> or id=<что-то еще сколько-угодное>
...
Рейтинг: 0 / 0
14.12.2004, 17:15
    #32827248
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
tajгм... ну а как же мне тогда... вот мне нужно скажем 6, ты пишешь -
RFT- при условии ИЛИ: ище те записи, в которых ID может встретиться ИЛИ 1 ИЛИ 6 ИЛИ может быть даже 139.
а вдруг он мне вернет где 1 или даже 139, а мне ведь нужно где 6?


Интересно, зачем так долго спорить? Не проще ли проверить?
SELECT возвращает ВСЕ записи, отвечающие условию.
А условие такое: нужны записи, которые имеют Id=1 или Id=2 или Id=10.
Это же не значит, что как только будет найдена любая запись, отвечающая условию, то поиск прекратится. Даже если записей с Id=1 несколько, то будут выбраны все эти записи
...
Рейтинг: 0 / 0
14.12.2004, 17:17
    #32827254
taj
taj
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
А чем вам не нравится решение со временной таблицей?
...
Рейтинг: 0 / 0
14.12.2004, 17:22
    #32827265
swept
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
tajА чем вам не нравится решение со временной таблицей?

Народ, по-моему вы просто ошиблись форумом, вам надо в 51.
...
Рейтинг: 0 / 0
14.12.2004, 17:23
    #32827267
RFT
RFT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ВЛИП !
Тем что не люблю усложнять себе жизнь. Да, еще. Если таблицы огромные, то на скорости выполнения различие будет ощутимое. И вообще, это кощунство - так извращенно мучать базу:-)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / ВЛИП ! / 25 сообщений из 34, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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