![]() |
![]() |
#1 |
Участник
|
![]()
Привет
Мне дали решить вот такую вот задачку и никак не получается, может кто и поможет, или хоть намекнет как к неи подоити One of the following two queries can be rewritten without the use of subqueries. The other cannot. Identify the one which cannot be rewritten without a subquery, and explain why it cannot. Rewrite the other so that it doesn’t use a subquery. Есть в наличии table drug которая имеет columns: drug_code, drug_name, type, price SELECT drug_code, drug_name FROM drug d1 WHERE price < (SELECT MAX(price) FROM drug d2 WHERE d1.type=d2.type) SELECT drug_code, drug_name FROM drug d1 WHERE price < (SELECT AVG(price) FROM drug d2 WHERE d1.type=d2.type) Any advice welcome Спасибо |
![]() |
![]() |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#6 |
Просто Зануда
|
![]()
По-моему, можно оба переписать без подзапросов, изпользуя inline view или WITH clause.
Думать полезно, кстати. Нейроны тренируются.
__________________
The misuse of language induces evil in the soul © Socrates ![]() |
![]() |
![]() |
![]() |
#7 | ||
Спам-робот
|
![]() Цитата:
Цитата:
__________________
My Church is Black... |
||
![]() |
![]() |
Благодарность от: | KaraNagai (29.04.2010) |
![]() |
#8 |
Активный Участник
|
![]()
По моему совсем без скобок нельзя.
Но вот такое вроде как работает (протестировано) SELECT drug_code, drug_name FROM drug d1, (select max(price) price , type from drug group by type) d2 WHERE d1.type = d2.type AND d1.price <d2.price И тоже самое для avg, заменить мах на avg |
![]() |
![]() |
![]() |
#10 |
Просто Зануда
|
![]()
А кого это волнует? Обе конструкции поддерживаются и Oracle, и SQL Server. И это правильно, так как значительно облегчают жизнь.
__________________
The misuse of language induces evil in the soul © Socrates ![]() |
![]() |
![]() |
![]() |
#11 |
Спам-робот
|
![]()
Вот вечно эти дазо-банщики! Никакого уважения к портируемости кода! Хлебом не корми - дай поюзать проприетарные фенечки!
|
![]() |
![]() |
![]() |
#12 |
Спам-робот
|
![]()
За портирование SQL кода надо немедленно выписывать пенделя чуть пониже спины
![]() Суть была в том что база не была указана, а в таком случае лучше не юзать странные конструкции.
__________________
My Church is Black... |
![]() |
![]() |
![]() |
#13 |
READ ONLY
|
![]()
можно второй пример без подзапроса переписать в ANSI стандарте
__________________
Хотели всё и сразу, а получили ничего и надолго. [url=http://www.visited.ru][img]http://www.visited.ru/flagmap.php?visited=ATBEBGCZFRDEIEITMTNLRUESUKVATR[/img][/url] |
![]() |
![]() |
Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок |
![]() |
#14 |
Спам-робот
|
![]()
Что-то вроде такого?
SELECT d1.drug_code, d1.drug_name FROM drug d1 left join drug d2 ON d1.type = d2.type WHERE d1.price < d2.price ORDER BY d1.drug_code, d1.drug_name; ой, поправил Последний раз редактировалось vc, 28.04.2010 в 16:10. |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщ. |
Вопросик | Asiza | Вопросы и предложения | 13 | 13.02.2010 21:44 |
Вопросик! | ProGameR | Автотранспорт | 14 | 31.01.2010 20:59 |
вопросик | Ратобор | Вопросы и предложения | 5 | 25.01.2010 16:03 |
вопросик. | xandrey | Иммиграция | 9 | 15.12.2009 21:31 |
Вопросик | Irinak | Работа в Ирландии | 12 | 20.01.2006 11:20 |