Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 условие или, или в запросе  [new]
nixxon
Member

Откуда:
Сообщений: 8
здравствуйте, подскажите, пожалуйста, как правильно написать следующий запрос,
есть такая таблица Users:
user country Language
Ivanov Russia RU
Ivanov Russia EN
Smit England EN
Kusko Ukraine RU
Kusmo Ukraine EN
Abt Germany GN

нужно вывести пользователи, которые владеют только каким одним языком: или только русским, или только английским, или только немецким

могу ли я написать запрос так:
Select user from Users where (Language='RU' and not 'EN' and not 'UA') OR (Language='EN and not 'RU' and not 'GN') OR (Language='GN' and not 'RU' and not 'EN')
10 июл 17, 17:42    [20630479]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
nixxon,

SELECT [user country], [Language] FROM User GROUP BY [user country], [Language]  HAVING COUNT([Language]) = 1
10 июл 17, 17:45    [20630492]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
nixxon
Member

Откуда:
Сообщений: 8
[user country]
не знал такого приема, это как бы составной ключ?
10 июл 17, 17:59    [20630534]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
nixxon
Member

Откуда:
Сообщений: 8
nixxon

могу ли я написать запрос так:
Select user from Users where (Language='RU' and not 'EN' and not 'UA') OR (Language='EN and not 'RU' and not 'GN') OR (Language='GN' and not 'RU' and not 'EN')


и все таки интересует вариант решения как правильно записать, условие "где пользователь владеет только каким одним языком: или только русским, или только английским, или только немецким"

Спасибо
10 июл 17, 18:02    [20630542]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Добрый Э - Эх
Guest
nixxon,

Перефразируй условие и переведи дословно на английский:
Владеет только одним языком ---> не существует записи о владении другим языком.
10 июл 17, 18:18    [20630609]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
nixxon
не знал такого приема, это как бы составной ключ?
составной ключ - это физический объект в базе данных.
А TaPaK написал запрос.
10 июл 17, 19:17    [20630725]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
alexeyvg
nixxon
не знал такого приема, это как бы составной ключ?
составной ключ - это физический объект в базе данных.
А TaPaK написал запрос.
Он его неправильно написал: [user] и [country] - это два разных поля.
10 июл 17, 19:31    [20630758]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
iap
alexeyvg
пропущено...
составной ключ - это физический объект в базе данных.
А TaPaK написал запрос.
Он его неправильно написал: [user] и [country] - это два разных поля.
ой, не заметил :-)
10 июл 17, 20:21    [20630862]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
nixxon,


select [user] from [users] group by [user]
having count(distinct [language])>1 
11 июл 17, 08:38    [20631767]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Алексей Куренков
Member [заблокирован]

Откуда: Москва
Сообщений: 567
Если идентификатор юзера 2 поля: юзер и кантри, то в селект и группировке 2 поля и указать. Если имя пользователя уникально не зависимо от страны оставить как написал.
11 июл 17, 08:40    [20631771]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Алексей Куренков
nixxon,


select [user] from [users] group by [user]
having count(distinct [language])>1 


Все почему то забыли условие

nixxon
или только русским, или только английским, или только немецким


Видимо, в базе имеются и другие языки.

Тут не совсем точная постановка, в зависимости от нюансов могут быть два варианта:

1) Если человек владеет русским и украинским, то он должен попасть в список (т.к. владеет только одним из вышеперечисленных):

select [user] 
from [users] 
where Language in ('EN', 'RU', 'GN')
group by [user]
having count([language])=1 


2) Если человек владеет русским и украинским, он не должен попасть в список, т.к. владеет более чем одним языком, и если владеет украинским - тоже не должен - т.к. владеет не языком из списка:

select [user] 
from [users] 
group by [user]
having count(Language) = 1 and sum(case when Language in ('EN', 'RU', 'GN') then 1 else 0 end)=1
11 июл 17, 09:46    [20631928]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Minamoto,

автор
Тут не совсем точная постановка, в зависимости от нюансов могут быть два варианта:

можно продолжать гадать и предположить, что ТС хочет просто выбрать людей которые знают только английский(а не один из 3-х), но пока ТС не сможет однозначно изложить, что же ему надо, можете генерить дальше
11 июл 17, 09:52    [20631942]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
TaPaK
Minamoto,

автор
Тут не совсем точная постановка, в зависимости от нюансов могут быть два варианта:

можно продолжать гадать и предположить, что ТС хочет просто выбрать людей которые знают только английский(а не один из 3-х), но пока ТС не сможет однозначно изложить, что же ему надо, можете генерить дальше

Ну вы то пропустили даже условие, которое автором было изложено, так что считаю себя вправе внести свои замечания ;)
11 июл 17, 10:15    [20632072]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
автор
Ну вы то пропустили даже условие, которое автором было изложено, так что считаю себя вправе внести свои замечания ;)
ну вы то просто решили, что есть какие-то ещё некие языки которые не изложены в постановке, продолжайте гадать
11 июл 17, 10:19    [20632082]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
TaPaK
автор
Ну вы то пропустили даже условие, которое автором было изложено, так что считаю себя вправе внести свои замечания ;)
ну вы то просто решили, что есть какие-то ещё некие языки которые не изложены в постановке, продолжайте гадать
Помогите тупенькому, расскажите, что же я конкретно добавил, что не изложено в постановке (кроме рассмотрения двух альтернативных пониманий постановленной задачи).
11 июл 17, 10:41    [20632197]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Minamoto
TaPaK
пропущено...
ну вы то просто решили, что есть какие-то ещё некие языки которые не изложены в постановке, продолжайте гадать
Помогите тупенькому, расскажите, что же я конкретно добавил, что не изложено в постановке (кроме рассмотрения двух альтернативных пониманий постановленной задачи).
цитирую "тупенькому"
автор
Видимо, в базе имеются и другие языки.
11 июл 17, 10:42    [20632210]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
TaPaK
Minamoto
пропущено...
Помогите тупенькому, расскажите, что же я конкретно добавил, что не изложено в постановке (кроме рассмотрения двух альтернативных пониманий постановленной задачи).
цитирую "тупенькому"
автор
Видимо, в базе имеются и другие языки.
Т.е. вы не заметили еще и это условие в запросе от автора?

nixxon
not 'UA'


Ну-ну, продолжайте.
11 июл 17, 11:07    [20632313]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
nixxon
Member

Откуда:
Сообщений: 8
коллеги, попытаюсь более подробно объяснить

есть такая таблица Users, состоящая из трех столбцов user, country, langugae:
user country language
Ivanov Russia RU
Ivanov Russia EN
Smit England EN
Kusko Ukraine RU
Kusmo Ukraine EN
Abt Germany GN

нужно извлечь пользователей, которые владеют только каким одним языком: или только русским, или только английским, или только немецким, при этом надо вывести столбцы: user, language

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

user language
Smit EN
Abt GN

могу ли я написать запрос так:
Select user from Users where (language='RU' and not 'EN' and not 'UA') OR (Language='EN and not 'RU' and not 'GN') OR (Language='GN' and not 'RU' and not 'EN')

т.е. вопрос в том, как написать условие что надо вывести пользователей, которые владеют только каким одним языком: или только русским, или только английским, или только немецким, при этом надо вывести столбцы: user, language

Спасибо за участие
11 июл 17, 14:37    [20633471]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
nixxon
коллеги, попытаюсь более подробно объяснить

У вас ВООБЩЕ не получилось. Никаких деталей по сравнению с изначальным постом.

И поскольку вопрос у вас один:

nixxon
могу ли я написать запрос так:

То ответ - нет, т.к. в запросе вы выводите один столбец, а хотите получить два.

Вариантов решений вам уже накидали, проверяйте, если что-то не устраивает - задавайте уточняющие вопросы.
11 июл 17, 14:42    [20633524]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Minamoto
nixxon
могу ли я написать запрос так:

То ответ - нет, т.к. в запросе вы выводите один столбец, а хотите получить два.

Это, конечно, не считая того, что у вас синтаксис не соблюдается и ваш запрос не выполнится.
11 июл 17, 14:43    [20633530]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
nixxon
Member

Откуда:
Сообщений: 8
Minamoto
Minamoto
пропущено...

То ответ - нет, т.к. в запросе вы выводите один столбец, а хотите получить два.

Это, конечно, не считая того, что у вас синтаксис не соблюдается и ваш запрос не выполнится.

действительно это была опечатка, извините. Я всё перебрал никак не соображу как все-таки правильно написать условие, подскажите, пожалуйста. как это сделать.
11 июл 17, 15:11    [20633775]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
nixxon, вам уже предложили варианты - вы их проверили? Обнаружили, что вас в них не устраивает?
11 июл 17, 15:17    [20633811]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
SELECT [user]
FROM [users]
WHERE [Language] IN('EN', 'RU', 'GN') 
GROUP BY [user]
HAVING COUNT(*)=1;
11 июл 17, 15:26    [20633866]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
iap
...

Всю интригу испортили.
Мне бы хотелось посмотреть, как он начал бы оскорблять нас, тупеньких и убогоньких, что мы не можем простейший запрос написать. Ну или ушел бы, хлопнув тредом.
Тск, а тут на те, голубое блюдо с золотой каёмочкой.
11 июл 17, 15:37    [20633960]     Ответить | Цитировать Сообщить модератору
 Re: условие или, или в запросе  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Руслан Дамирович
iap
...


Всю интригу испортили.
Мне бы хотелось посмотреть, как он начал бы оскорблять нас, тупеньких и убогоньких, что мы не можем простейший запрос написать. Ну или ушел бы, хлопнув тредом.
Тск, а тут на те, голубое блюдо с золотой каёмочкой.
Я тему-то не читал... :(
11 июл 17, 15:41    [20633998]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить