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

Откуда:
Сообщений: 13
Всем здравствуйте. Начала изучать sql. И никак не дается мне одна задача.
Вот условия: есть две таблицы.Первая таблица содержит уникальный код, ФИО. Вторая таблица содержит телефон, ФИО. Нужно в первую таблицу добавить столбец, который содержал бы значения "нет номера" в случае если не находился номер телефона по ФИО во второй таблице.

Я так понимаю одним запросом тут не обойтись?
Буду благодарна за информацию
26 дек 17, 20:40    [21064696]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1367
Евгения1988,

Если вам надо изменить структуры таблицы - то да одним запросом не обойтись.
А вот если вам необходимо просто получить результирующий набор основанный на данных обоих таблиц то вполне делается одним запросом. Смотрите в справку про not exists
26 дек 17, 21:20    [21064762]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Евгения1988
Member

Откуда:
Сообщений: 13
Спасибо большое, да нужно будет только результирующий набор получить. буду читать про not exists, надеюсь дойдет)
26 дек 17, 21:27    [21064771]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1367
Евгения1988,

Хотя в вашем случае можно обычным left join обойтись
26 дек 17, 21:29    [21064773]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31356
felix_ff
Евгения1988,

Хотя в вашем случае можно обычным left join обойтись
Возможно, в задаче предполагается, что у ФИО может быть множество телефонов, так что лучше exists, хуже не будет...
26 дек 17, 22:06    [21064816]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 398
alexeyvg
felix_ff
Евгения1988,

Хотя в вашем случае можно обычным left join обойтись
Возможно, в задаче предполагается, что у ФИО может быть множество телефонов, так что лучше exists, хуже не будет...

А чем LEFT JOIN с GROUP BY хуже?
26 дек 17, 22:16    [21064849]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Евгения1988
Member

Откуда:
Сообщений: 13
а как в случае если not exists использовать значения "нет номера" добавить в столбец?
26 дек 17, 22:40    [21064914]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
xenix
Guest
автор
а как в случае если not exists использовать значения "нет номера" добавить в столбец?

Наверное, как-то так:
автор
SELECT T.ID, T.FIO,'NO PHONE NUMBER' DESCRIPTION
FROM TABLE1 T
WHERE NOT EXISTS
(
SELECT 1
FROM TABLE2 TT
WHERE T.FIO=TT.FIO
)
26 дек 17, 23:05    [21065020]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 398
xenix, мимо.
Скорее так:
SELECT F.FIO, ISNULL(MAX(P.PHONE),N'нет номера') AS PHONE
FROM TEST_FIO F
LEFT JOIN TEST_PHONE P ON F.ID=P.FIOID
GROUP BY F.ID, F.FIO
26 дек 17, 23:16    [21065064]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Евгения1988
Member

Откуда:
Сообщений: 13
xenix,
спасибо Вам большое. никак не могла понять как добавить дополнительную информацию "нет телефона" в отдельный столбец.теперь поняла.
26 дек 17, 23:18    [21065073]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Евгения1988
xenix,
спасибо Вам большое. никак не могла понять как добавить дополнительную информацию "нет телефона" в отдельный столбец.теперь поняла.


напишите какую оценку получили
27 дек 17, 13:02    [21066289]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Ролг Хупин
Евгения1988
xenix,
спасибо Вам большое. никак не могла понять как добавить дополнительную информацию "нет телефона" в отдельный столбец.теперь поняла.


напишите какую оценку получили

Она это, не оценок ради, а хлеба для. Даже в Белоруссию собиралась переехать за бесплатно программировать.

Есть вариант, что халтурит для студентов, которым вломлапки не позволяют самим вопросы задавать :)
27 дек 17, 13:42    [21066429]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Евгения1988
Member

Откуда:
Сообщений: 13
Уважаемые форумчане, здравствуйте.
Подскажите пожалуйста а в чем разница между union и intersect.
В рамках своего обучения, а не халтуры (информация персонально для <Руслан Дамирович>) я столкнулась вот с такой задачей:

Найдите производителей, которые производили бы как ПК
со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц.
Вывести: Maker


Запрос вот так сделала:
select maker from Product,PC where Product.model=PC.model and PC.speed>=750
intersect
select maker from Product,Laptop where Product.model=Laptop.model and Laptop.speed>=750

Решение хоть и верное, но как-то не до конца понимаю что ли. Пробую с union пишет "Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.".

Если не затруднит объясните пожалуйста для чайников в чем разница между двумя операторами union и intersect.
27 дек 17, 23:17    [21068338]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Евгения1988,

что ж так сложно попробовать?
declare @t1 table (id1 varchar(2))
declare @t2 table (id2 varchar(2))

insert @t1(id1)values('A'),('A'),('B'),('C')
insert @t2(id2)values('A'),('B'),('B'),('D')

select t1.* from @t1 t1
union
select t2.* from @t2 t2

select t1.* from @t1 t1
intersect
select t2.* from @t2 t2

вот тут кладезь знаний: Справочник по Transact-SQL
27 дек 17, 23:52    [21068425]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
waszkiewicz
Member

Откуда:
Сообщений: 1081
Евгения1988,
еще бы неплохо правила sql-ex.ru прочитать
28 дек 17, 08:46    [21068752]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Евгения1988, эскуль-экс мы тут не обсуждаем. Это у нас святое, и каждый должен сам пройти (или не пройти) эти испытания.
Могу только сказать, что когда вам пишут, что ваше решение не прошло дополнительные проверки, это значит, что вы упустили какие-то нетривиальные случаи входных данных, которые смоделированы специально, чтоб вас подловить на невнимательности к деталям.
29 дек 17, 09:19    [21071730]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
aleks222
Guest
Евгения1988
Если не затруднит объясните пожалуйста для чайников в чем разница между двумя операторами union и intersect.


A
union
B
=
A
B

A
intersect
B
=
29 дек 17, 11:42    [21072195]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Евгения1988
Уважаемые форумчане, здравствуйте.
Подскажите пожалуйста а в чем разница между union и intersect.
В рамках своего обучения, а не халтуры (информация персонально для <Руслан Дамирович>) я столкнулась вот с такой задачей:

Найдите производителей, которые производили бы как ПК
со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц.
Вывести: Maker


Запрос вот так сделала:
select maker from Product,PC where Product.model=PC.model and PC.speed>=750
intersect
select maker from Product,Laptop where Product.model=Laptop.model and Laptop.speed>=750

Решение хоть и верное, но как-то не до конца понимаю что ли. Пробую с union пишет "Ваш запрос вернул правильные данные на основной базе, но не прошел тест на проверочной базе.".

Если не затруднит объясните пожалуйста для чайников в чем разница между двумя операторами union и intersect.


т.е. вы даже школьный курс математики уровня 7 класса не проходили?
29 дек 17, 12:08    [21072305]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
256k
т.е. вы даже школьный курс математики уровня 7 класса не проходили?

С каких это пор теория множеств в 7 классе СОШ преподается?
29 дек 17, 12:22    [21072346]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Евгения1988

Если не затруднит объясните пожалуйста для чайников в чем разница между двумя операторами union и intersect.

+
Картинка с другого сайта.
29 дек 17, 12:28    [21072368]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Разрывающая экран картинка под спойлером
+
Картинка с другого сайта.
29 дек 17, 12:30    [21072380]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Руслан Дамирович
256k
т.е. вы даже школьный курс математики уровня 7 класса не проходили?

С каких это пор теория множеств в 7 классе СОШ преподается?


7 или 8 - какая разница?

Введение понятия множества в 8-м классе
http://xn--i1abbnckbmcl9fb.xn--p1ai/статьи/604282/
29 дек 17, 12:34    [21072399]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
aleks222
Евгения1988
Если не затруднит объясните пожалуйста для чайников в чем разница между двумя операторами union и intersect.


A
union
B
=
A
B

A
intersect
B
=


Всё, ТС учиться не надо, теория множеств изложена
29 дек 17, 12:36    [21072408]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
256k
Member

Откуда: с.Торчилово, Псковская обл.
Сообщений: 437
Евгения1988
Уважаемые форумчане, здравствуйте.
Подскажите пожалуйста а в чем разница между union и intersect.

В рамках своего обучения, а не халтуры (информация персонально для <Руслан Дамирович>) я столкнулась вот с такой задачей:

Найдите производителей, которые производили бы как ПК
со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц.
Вывести: Maker



Мэм, к слову, Герцы, килоГерцы, мегаГерцы - единицы измерения ЧАСТОТЫ, а не "скорости"
29 дек 17, 12:37    [21072423]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
256k
Мэм, к слову, Герцы, килоГерцы, мегаГерцы - единицы измерения ЧАСТОТЫ, а не "скорости"

Ой-вэй! Маркетологи отакуед!

Герц (русское обозначение: Гц, международное обозначение: Hz) — единица частоты периодических процессов.
Термин «скорость» используют в науке и в широком смысле, понимая под ним быстроту изменения какой-либо величины.

Не вижу противоречия в том, чтобы считать обозначение "750 МГц" скоростью.
29 дек 17, 13:09    [21072564]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить