Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2013, 19:17   #11
Anna312
Новичок
Джуниор
 
Регистрация: 13.11.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
если честно то какойто бред написан
Наверное=) Но больше ничего нет(
А если независимо от субд, то как можно обходить такие моменты (как в примере)?
Anna312 вне форума Ответить с цитированием
Старый 13.11.2013, 23:36   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Анна, чтобы обходить "такие моменты" (как я понимаю, под "моментами" Вы понимаете ошибочный SQL код) - нужно писать SQL код, который соответствует стандарту SQL (+ особенности конкретной СУБД, хотя для учебных целей это не важно)!

А Вы бы лучше написали задание, которое Вы пытаетесь выполнить - Вам бы подсказали правильный SQL код. Вот его бы Вы и разбирали, учились писать такой же.



при любой раскладе рекомендую "букварь" по SQL - это книга М.Грубера "Понимание SQL"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2013, 00:26   #13
Anna312
Новичок
Джуниор
 
Регистрация: 13.11.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Анна, чтобы обходить "такие моменты" (как я понимаю, под "моментами" Вы понимаете ошибочный SQL код) - нужно писать SQL код, который соответствует стандарту SQL (+ особенности конкретной СУБД, хотя для учебных целей это не важно)!

А Вы бы лучше написали задание, которое Вы пытаетесь выполнить - Вам бы подсказали правильный SQL код. Вот его бы Вы и разбирали, учились писать такой же.



при любой раскладе рекомендую "букварь" по SQL - это книга М.Грубера "Понимание SQL"
Под "моментами" я понимаю не "ошибочный код", а ситуацию, когда из нескольких таблиц, сведенных в одну, необходимо вытащить максимум (или минимум, или среднее) какого-либо поля. С необходимостью выполнить такое действие я столкнулась не в одном задании, поэтому суть поста не в том, чтобы решить конкретную задачу, а в том, чтобы понять как вообще выполнять подобные операции.
Anna312 вне форума Ответить с цитированием
Старый 14.11.2013, 01:33   #14
Anna312
Новичок
Джуниор
 
Регистрация: 13.11.2013
Сообщений: 8
По умолчанию

Сейчас попробовала сделать так: вместо псевдонима 'А' в строчке
WHERE price=(SELECT MIN(price) FROM A
я просто повторила запрос, который формирует А
т.е. получилось так:

SELECT maker FROM

(SELECT maker, price
FROM Printer JOIN Product
ON Printer.model=Product.model
WHERE color='y') AS A

WHERE price=(SELECT MIN(price) FROM (SELECT maker, price
FROM Printer JOIN Product
ON Printer.model=Product.model
WHERE color='y') AS B )

Теперь все работает
Но это же как-то... В общем, дублирование кода( Подскажите пож-та, можно ли как-то избежать дублирования все-таки?
Anna312 вне форума Ответить с цитированием
Старый 14.11.2013, 08:35   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
В общем, дублирование кода( Подскажите пож-та, можно ли как-то избежать дублирования все-таки?
Можно, но в каждом конкретном случае по разному. Алгоритм простой - оптимально сделать запрос. Общего рецепта нет - суть всегда в решении конкретной задачи. И в разных СУБД он (рецепт) может сильно отличаться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.11.2013, 14:15   #16
Anna312
Новичок
Джуниор
 
Регистрация: 13.11.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно, но в каждом конкретном случае по разному. Алгоритм простой - оптимально сделать запрос. Общего рецепта нет - суть всегда в решении конкретной задачи. И в разных СУБД он (рецепт) может сильно отличаться
Спасибо большое!)
Anna312 вне форума Ответить с цитированием
Старый 14.11.2013, 14:28   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Анна, в какой таблице у Вас находится поле price?

Вы хотели запросом получить производителя(-ей) принтеров с самой низкой ценой, так?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2013, 14:45   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Да и не только price. Лучше структуру табличек показать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.11.2013, 15:17   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Да и не только price. Лучше структуру табличек показать
Ага. согласен.
Ведь нужно будет выбрать ещё и производителя (поле maker). да и вообще, структуру нужно чётко знать, прежде чем запрос писать!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка:"Вложенные запросы в данном контексте не разрешены. Допускаются только скалярные выражения." Андрей9677 Помощь студентам 1 26.06.2013 01:58
DBChart и агрегатные функции Drugnir БД в Delphi 6 19.06.2012 22:32
Вложенные запросы java_91 SQL, базы данных 1 07.07.2011 18:52
Вложенные запросы SQL KsandrXXX Помощь студентам 4 11.02.2011 11:40
Агрегатные функции в Query nataly_ukr БД в Delphi 3 04.09.2007 18:15