Изучение SQL

Ira2709

Хочу начать изучать БД. Какую систему БД посоветуете? Можете порекомендовать литературу? Уровень самый начальный, какой только может быть.

okis

Из классической литературы: Дейт (Введение в СУБД); из отечественных: Кузнецов; из нетрадиционных: The Manga Guide to Databases.
Ещё есть The Art of SQL, SQL Cookbook с примерами применения SQL для решения практических задач.
С Oracle никогда не работал, не могу подсказать.

stm6692945

объясните мне.
sql же ботается за пол часа в инете или я неправ.
ps: знаю sql на уровне php макаки

Helga87

Ты прав.

katrin2201

на уровне php макаки - в общем-то да
но есть слои и дальше, много слоев...

Ira2709

SQL - возможно. Только хочется не только язык этот, а с применением к какой-нибудь базе данных.

hprt

ну тогда выбирай субд и спрашивай конкретно

Ira2709

А есть предложения? Я видел только варианты MS sql и Oracle.

zorin29

У каждой СУБД свой диалект SQL, но в фундаментальных вещах они все совпадают:
SELECT * FROM Products WHERE ProductID = 4
везде работает.
Выбирать СУБД я бы посоветовал по принципу "что понадобится для работы". Если же интерес академический - то "что проще установить". Во втором случае, думаю, подойдет MySQL или MS SQL Server Express Edition.

katrin2201

я бы начинал с чего-нибудь попроще, типа mysql

zorin29

P.S. Oracle не советую для ознакомления, ибо развертывается он долго и мучительно, а новая пустая БД занимает гигабайт :)

Ira2709

Я на 5 курсе,сейчас хочу именно заранее,для работы, выучить БД.

okis

Оракл тоже есть XE, бесплатный, если интересен именно он.

zorin29

именно заранее,для работы, выучить БД.
Если не знаешь, какая СУБД будет на работе - см. пункт 2, "академический интерес" :)

zorin29

Гугл подсказывает, что для монструозных крупных БД наиболее популярен Oracle, для остальных корпоративных - MS SQL, для open-source проектов - MySQL. Проблему выбора это все равно не снимает :)

Ira2709

Тогда для MS sql что посоветуете?

hprt

я бы рекомендовал MSSQL Express Edition - и ставится без проблем, и клиенская тулзня сразу есть

yvanoff

еще есть хороший сайт sql-ex.ru , где можно потренироваться в написании запросов на sql

hprt

что ставить - см. выше
Из книжек - вроде MSSQL Bible вроде бы неплохая (не читал, но хвалебные отзывы слышал книжки Itzik Ben-Gan - читал некоторые, но они больше на опытных рассчитаны имхо, хотя эта должна быть как раз. Ну и конечно Books Online (сокращенно BOL) - стандартный хелп, на самом деле, его зачастую хватает за глаза (сам именно с него начинал, правда был опыт с ораклом уже)

hprt

еще на sql.ru поищи темы - несколько раз обсуждались книги для новичков

Ira2709

Спасибо. Поищу

Teteshnik

не знаю что значит "остальные корпоративные", но наиболее распространенная база - оракл. Один знакомый посоветовал Кайт - Оракл для профессионалов. Его наверно и стоит читать. Того что учится за полчаса - совсем не хватает для нормальной работы. И на мой взгляд полезно взять документацию к ораклу и с буквы А начать читать про функции и возможности, потратив сначала. конечно те полчаса на те select, insert и т.д. Вот сам тоже хочу заняться, но пока кайта не съел

uncle17

не знаю что значит "остальные корпоративные", но наиболее распространенная база - оракл
лет холивор бегин

Teteshnik

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

uncle17

вот пусть завтра заучит SQL-92, к вечеру определится с непонятными вопросами, а там и дойдем до предпочтений

Teteshnik

а вообще конечно не понимаю ребят которые вкладывают в железо и юзают мускуль

Teteshnik

92 - очень расплывчатый. сейчас все базы соответствуют 92. ну наверно все. вопрос какой уровень правда 92

uncle17

знаешь, это звучит примерно как "РНР - язык не для высоконагруженных проектов".
Лет семь назад это было правдой, но с тех пор всё поменялось кардинально. То же почти и в мускуле

doublemother

а вообще конечно не понимаю ребят которые вкладывают в железо и юзают мускуль
Вспомним о том, что весьма малое количество серьезных веб-проектов использует винду. MSSQL отпадает сразу. Оракл не для ынтырпрайза тоже почти никто не использует, по озвученным уже выше причинам. Из популярных остаются мускуль и постгрес. Между ними и идёт основной выбор. На прошлогоднем highload много пальцемашущих дяденек уверенно говорили, что мускуль — это вообще не БД, и приводили много умных слов, из которых конечно надо быть сделать вывод, что постгрес рулит, но практика показывает, что в мускуле есть много всяких хитрых оптимизаций, за счёт которых он часто постгрес обгоняет (как правило, на селектах, для которых мускуль и предназначен, в общем-то). До сих пор не знаю, пофиксили ли, наконец, в постгресе выполнение запроса
SELECT COUNT(*) FROM tablename;

uncle17

FROM tablename;
ты про
FROM largetablename;
или еще что-то?

doublemother

Да-да, про неё, родимую.

Ira2709

Пока читаю про сам SQL. Два вопроса возникло:
1) ключи строк во всех таблицах различны?
2) при команде select порядок предложения where и ключегого слова from однозначен?
Может глупый вопрос, но на сколько сильно отличаются сами базы данных?

hprt

Хоть сам приверженец MSSQL, на Кайта ходил, денег не пожалел (в феврале в Москве был) - супер дядька. Его читать стоит в любом случае

hprt

А по поводу документации с буквы А - да нахер это нужно, извините
Не знаю насчет СУБД кроме оракла и мсскл, с которыми немало работал, но насчет них однозначно скажу - надо знать в общем про функции, остальное по мере надобности. Иначе мозг просто убьешь, а толку не будет. Самое простое, конечно, развиваться от релиза к релизу - скажем, в 2005 сиквеле (мсскл, конечно) появился сервис брокер, в 2008 - передача табличных типов данных в параметрах и тд, но в целом важно представлять именно возможности, а не детали! А топикстартеру вообще для начала не стоит на этом заморачиваться

Teteshnik

Вспомним о том, что весьма малое количество серьезных веб-проектов использует винду. MSSQL отпадает сразу. Оракл не для ынтырпрайза тоже почти никто не использует, по озвученным уже выше причинам.
чо? давай с аргументами... XE можно замечательно использовать по началу. EE после "поначалу" можно себе позволить

Teteshnik

у каждого разные понятия про почитать. кто-то просмотрел и в курсе кто-то нет. недавно оказалось что я не в курсе про полный синтаксис fetch. Другими словами, список ведь не предоставишь полный... насчет прочтения полной доки согласен

hprt

мне тут на днях (увольняюсь) придумали задание на оставшееся время - научить сиквелу тестера, дабы он сдал какие-то экзамены. субд оракл - честно говоря, от вопросов по синтаксису я слегка впал в ступор, хотя в запасе пару лет разработки именно на оракле + 5 лет на мсскл - очень многое не пригождается ни разу, а некоторые вещи сделаны "чтоб были"

doublemother

1) ключи строк во всех таблицах различны?
2) при команде select порядок предложения where и ключегого слова from однозначен?
Может глупый вопрос, но на сколько сильно отличаются сами базы данных?
1. Не очень понял вопрос.
2. AFAIK, в ANSI SQL порядок строгий: SELECT fields FROM tables WHERE conditions.
3. Достаточно сильно. Синтаксис запросов (в пределах ANSI) везде одинаковый в общем-то, а вот мелочей, к которым надо привыкать, дофига, особенно внутри самих сред-консолек. Всякие "GO", которые надо писать после запросов в MSSQL; мускульные административные команды, которые по синтаксису практически идентичны SQL-запросам (show databases like "m%"); аналогичные административные команды в sqlite, только уже ничего похожего на sql, начинаются с точки и не разрешают на конце ставить точку с запятой (.databases) — всё это очень разное и сильно мешает. Да и сам язык запросов всё-таки все пилят в свою сторону — в общем случае нельзя, сдампив MySQL-базу в виде набора SQL запросов, взять и выполнить оный дамп в том же постгрес, чтобы всё нормально отработало.

hprt

1. так же не понял вопрос, поэтому вообще не стал отвечать
2. select... from... where... везде одинаковы, конечно, но синтаксис везде таки разный
3. всякие GO мсскл - вообще, сервер слова "GO" не понимает - это клиентская команда, сообщающая конец набора команд. Скажем, стандартные клиенты "GO n" выполнят батч n раз - но это опять же дело клиента, а не субд. Насчет show databases итд не в курсе, но вполне вероятно, что зачастую дело обстоит похожим образом
UPD: на исходный вопрос про различия - отличаются офигенно сильно. И дело не в примочках типа GO или SHOW TABLES. Подробнее - проще отвечать на конкретные вопросы, чем искать различия :)
PS а вообще, нахер все эти обсуждения топикстартеру? Ему просто книжки почитать хочется, а не холивары на пустом месте :)

doublemother

чо? давай с аргументами... XE можно замечательно использовать по началу. EE после "поначалу" можно себе позволить
1. Про потребление ресурсов уже сказали, да?
2. Зачем себе что-то "позволять", когда мускуль можно взять бесплатно и без ограничений?
3. Оракл, судя по всему, не слишком любит нормально работать на всех подряд линукс-дистрибутивах. Я, честно признаюсь, сам его никогда не ставил, сейчас ради интереса погуглил, обнаружил мануал. Подумал много неприличных слов.
4. Простота использования. В любом дистрибутиве, на любом хостинге практически искаропки есть и сервер, и биндинги абсолютно ко всем языкам для mysql, postgresql, для пхп в убунтах/дебианах, например, даже php5-mssql ставится легко. В каком-нибудь экзотическом окамле заюзать мускуль или постгрес — как два пальца об асфальт, но хрен где ты без плясок, копаний в cpan/pear и т.п. заюзаешь оракл. Вот покопался сейчас на серверах, нашел в дебиане cl-sql-oracle для лиспа, в дебиане и фре libdbd-oracle-perl, и во фре еще php52-oci8 и оракл-клиент. Сервера нет ни в дебиане, ни в убунте, ни во фре.
5. Хостинги. Хостинги, ЧСХ, в большинстве своём не предоставляют оракловые БД. Они предоставляют мускуль. Еще хостинги любят сервера на debian/ubuntu/centos/freebsd. Не скажу за центось, а про три оставшихся дистрибутива и поддержку оракла в оных мы уже выяснили, да. Остаются еще хостинги на редхатах и сусях, на редхатах, вероятно, ситуация сильно получше, но сами по себе они в меньшинстве.

hprt

ггг, как-то промотал вчера, не заметил :)
1. Назови, пожалуйста, серьезные веб-проекты. Кроме фейсбуков, гуглов и подобных - таких проектов единицы, а ты говоришь о "весьма малом количестве". ASP.Net ни за что не развивали бы, если б он не был востребован. А вот не под виндой он, к сожалению, не работает. По опыту, в Англии (участвовал в нескольких проектах (каждый год-полтора) для "несерьезных компаний" на англ рынке, конкурентов тоже смотрели, разумеется) довольно много компаний используют аспнет+мсскл. Аудитория вебсайтов не особо большая, конечно, но назвать их несерьезными я не могу - клиенты наших заказчиков были весьма крутые (скажем, UK Gov, NHS и тд)
2.
Вспомним о том, что весьма малое количество серьезных веб-проектов использует винду. MSSQL отпадает сразу

Вспомнив о том, что в подавляющем большинстве российских банков используют Delphi, Java и .NET отпадают сразу.
Также в крупных и не очень компаниях почему-то в основном используют Oracle и MSSQL - дураки, наверное. Да, Enterprise - но отбрасывать этот сегмент весьма глупо

Ira2709

Я имел в виду первичные ключи строк в таблицах. Пока я хочу действительно почитать книгу(и). Я попозже посмотрю на sql.ru книгу по oracle, но кроме той книги для профессионалов Кайта, нет не для профессионалов, кем я не являюсь?

Teteshnik

Видишь ли, у тебя аргументы сводятся к доступности системы и к простоте настройки. Я полностью согласен, что оракл то еще говнище. Но дело в том, что это все запарка администратора и к обязанностям разработчика не имеет никакого отношения.
Я не защищаю какую-то отдельно взятую базу и не хвалю ее. Я делаю акцент на то, что стоит выбрать одну. Дальше я просто привожу аргументы в сторону оракла. Аргументы я могу привести и для мускуля. Аргументы для постгреса и mssql я не найду, ибо не работал почти.
Дак вот
если человек хочет в компанию пойти с высоконагруженной системой, банк например, то оракл велкам. Там ему хватит работы, в смысле задач, с одним ораклом.
если для галочки или для работы с сайтом малой нагруженности, то мускуль, но тогда нужно учить параллельно php, может еще чо и база отодвигается на второй план.
Нужно ведь познавать все для какой-то цели...

doublemother

Стой, про энтерпрайз я, если что, сразу оговорился, что к нему мной изложенное не относится. Я понимаю, что все меня минусующие — опытные оракловеды, и даже для сайта домашней коллекции порно поднимают оракл, но в реальности-то число крупных энтерпрайз компаний не так уж велико. Сколько у нас в стране банков? А сколько каких-нибудь туристических компаний? Для последних оракл, равно как и mssql, в пень не уперлись, потому что для оракла придётся как минимум брать выделенный сервер, оракловые специалисты дороже mysql-php-программистов, а виндовый хостинг, так уж сложилось, стоит намного дороже чем никсовый. Про другие страны не скажу, не в курсе, но у нас ситуация именно такова.

doublemother

Видишь ли, у тебя аргументы сводятся к доступности системы и к простоте настройки. Я полностью согласен, что оракл то еще говнище. Но дело в том, что это все запарка администратора и к обязанностям разработчика не имеет никакого отношения.
Одно вытекает из другого, знаешь ли :) Проблемы с доступностью → большинство проектов юзает то, что есть → число вакансий мало и все заняты опытными специалистами с сертификатами, а не теми, кто только сейчас садится почитать об SQL. Не согласен? :)
если человек хочет в компанию пойти с высоконагруженной системой, банк например, то оракл велкам. Там ему хватит работы, в смысле задач, с одним ораклом.
если для галочки или для работы с сайтом малой нагруженности, то мускуль
Я почти во всём согласен, только слово "высоконагруженной" надо заменить на "энтерпрайз". Проекты типа гугла, яху, википедии или фликра может и единичные, но наглядно демонстрируют возможность использовать мускуль и постгрес в очень даже высоконагруженных системах.

Dasar

>Проекты типа гугла, яху, википедии или фликра может и единичные, но наглядно демонстрируют возможность использовать мускуль и постгрес в очень даже высоконагруженных системах.
у этих проектов почти у каждого своя база данных, имеющих малое отношение к mysql и postgress.
ps
даже если компания использует mysql + навороченную свою надстройку над ней, то неправильно приводить такие примеры для обоснования выбора в пользу mysql для других разработчиков. базы данных же, как раз надстройками и отличаются: системой кэширования, репликации, оптимизации запросов, поддержкой full text search, olap, xml и т.д.

doublemother

у этих проектов почти у каждого своя база данных, имеющих малое отношение к mysql и postgress.
У википедии-то? Хорошо, с какого момента проект является серьезным? Over 1e6 кликов в сутки, на каждый клик идёт примерно 10-20 одних только инсёртов и дофига селектов — это достаточно серьёзно? Работает на мускуле без надстроек.

Dasar

>Работает на мускуле без надстроек.
во второе не верю.
хочешь сказать что у них один экземпляр mysql? нет, конечно.
а значит есть надстройка, которая обеспечивает кластеризацию, репликацию и т.д.
т.е. именно те механизмы за которые enterprise-базы и покупают.

serega1604

>а значит есть надстройка, которая обеспечивает кластеризацию, репликацию и т.д.
а давно из мускуля кластеризацию и репликацию выпилили?

ava3443

а давно из мускуля кластеризацию и репликацию выпилили?
А давно ли их добавили?
По поводу репликации.
Для пользователей Oracle поддержка синхронной или асинхронной реплики на резервном сайте - это стандарт, это самая обычная необходимость для любой боевой системы.
А много ли среди пользователей MySQL и PostgreSQL тех, кто имеет disaster recovery сайт?
Отсюда вытекает уровень реализации репликации в этих базах...
Сейчас всерьёз подумываю о замене Oracle на PostgreSQL в наших проектах (т.к. устали отстёгивать ораклу минимум 200K USD с каждого проекта но как-то пока всё фигово:
 - с репликацией швах, синхронной её в принципе не бывает (а периодически требуется);
 - из C++ с PostgreSQL придётся работать по ODBC (т.к. OTL не поддерживает native-клиента PostgreSQL вряд ли ODBC даст приличную скорость...

doublemother

во второе не верю.
хочешь сказать что у них один экземпляр mysql? нет, конечно.
а значит есть надстройка, которая обеспечивает кластеризацию, репликацию и т.д.
т.е. именно те механизмы за которые enterprise-базы и покупают.
s/у них/у нас/
Репликация появилась еще в четвертом мускуле. 8 лет назад. Добро пожаловать назад из анабиоза. Кластеризация была доступна еще 5 лет назад в виде MySQL Cluster и уже два года как входит в сам мускуль (с 5.1). Еще раз добро пожаловать.

hprt

Ты вот говоришь про трудоустройство и тд. Ну пусть у нас в стране 1000 банков, а туркомпаний миллион. А ты подумал, сколько работников в этой сфере требуется банку, а сколько турфирме? Разумеется, это аргумент в пользу неиспользуемых в "энтерпрайз" субд, ага. Плюс многим ли турфирмам с серьезными вебсайтами (я так полагаю, ты имеешь в виду именно их) требуется больше, чем ограничение бесплатных нормальных субд(оракл, мсскл, остальные в силу ряда причин не рассматриваю, хотя постгре тоже симпатичен)? У меня тетя работает в турфирме, я ей написал небольшую тулзню (каюсь, пхп+мускуль. но тут просто была возможность заюзать готовое решение, так бы не стал) - данных там за 6 лет набралось аж 700мб - в 4 гига мсскл експресс, конечно, не влезет.
Насчет цены работников - да, оракловые, наверное, подороже, но не сильно. Если брать совсем крутых - то везде одинаково. Ну и опять же, если цена хостинга определяет выбор технологий, то даже хз что сказать :)
Кстати по прочтении всего треда заново (чота слетело, и перекинуло на первое сообщение :( вспомнилось классическое "быстро-дешево-качественно" - мускуль, говоришь, быстро и дешево? ;)

Dasar

>Репликация появилась еще в четвертом мускуле. 8 лет назад. Добро пожаловать назад из анабиоза. Кластеризация была доступна еще 5 лет назад в виде MySQL Cluster и уже два года как входит в сам мускуль. Еще раз добро пожаловать.
лень лично смотреть насколько в mysql урезана репликация и кластеризация, поэтому отвечу словами другого чела:
http://www.xaprb.com/blog/2009/03/13/50-things-to-know-befor...
чел аж два раза повторяет, что кластеризация в mysql это совсем не тоже самое, что в oracle (насколько я понял, на кластер даже транзакции не распространяются
и что репликация поддерживается только самая простая - асинхронная.
..
8.Clustering is not what you think it is.
..
45.Replication is asynchronous and has many limitations and edge cases. For example, it is single-threaded, so a powerful slave can find it hard to replicate fast enough to keep up with a less powerful master.
46.Cluster is not what you think it is. Maybe I already said that, but it bears repeating.
..
зы
т.е. от того, что какие-то фичи в mysql громко назвали репликацией и кластером, это не означает при этом, что mysql обеспечивает репликацию и кластеризацию в нормальном объеме

mbolik1

Хватит гнать на Oracle MySQL. Может он пока не так хорош как Oracle Database, но я уверен со временем Oracle его дотянет до уровня. Ну или похоронит, как большинство купленных продуктов.

jgimi

Гугл подсказывает, что для монструозных крупных БД наиболее популярен Oracle, для остальных корпоративных - MS SQL, для open-source проектов - MySQL. Проблему выбора это все равно не снимает
Из распространенных также есть DB2 от IBM.
MySQL по отзывам специалистов по СУБД, довольно посредственный.

mbolik1

Из распространенных также есть DB2 от IBM
Из крупных ещё забыли Sybase ASE и IQ и Teradata.

pitrik2

3. Достаточно сильно. Синтаксис запросов (в пределах ANSI) везде одинаковый в общем-то, а вот мелочей, к которым надо привыкать, дофига, особенно внутри самих сред-консолек. Всякие "GO", которые надо писать после запросов в MSSQL; мускульные административные команды, которые по синтаксису практически идентичны SQL-запросам (show databases like "m%"); аналогичные административные команды в sqlite, только уже ничего похожего на sql, начинаются с точки и не разрешают на конце ставить точку с запятой (.databases) — всё это очень разное и сильно мешает. Да и сам язык запросов всё-таки все пилят в свою сторону — в общем случае нельзя, сдампив MySQL-базу в виде набора SQL запросов, взять и выполнить оный дамп в том же постгрес, чтобы всё нормально отработало.
чувак токо начал изучать sql а ты ему административные команды даешь
отвечу другим постом ему

pitrik2

Может глупый вопрос, но на сколько сильно отличаются сами базы данных?
в сложных вещах - на очень много
в обычном обыденном sql есть полно мелких отличий
например:
 в оракле пустая строка и NULL одно и то же
 в mysql имена таблиц регистрозависимые, т.е. select * from myTable и select * from mytable - запросы к разным таблицам
во многих субд есть автоинкрементный тип данных, а в оракл нету, там для этого другой механизм
но основные принципы sql конечно же у всех одинаковые

tokuchu

в оракле пустая строка и NULL одно и то же
И чем они это объясняют? Мне чё-то кажется, что это пиздец какой-то. :)

pitrik2

И чем они это объясняют? Мне чё-то кажется, что это пиздец какой-то. :)
ой
ну этому на какомнить sql.ru посвящено куча обсуждалок
вкратце: sql в принципе приближен к "человескому" языку. а на человеческом языке "пусто" и "нет данных" это одно и то же

vic-sher

А что тебе в этом не нравится?

tokuchu

А что тебе в этом не нравится?
Ну мне кажется это то же самое, как сказать, что 0 — это тоже NULL.
Смысл в чём. У поля либо может быть значение, либо может не быть. А пустая строка как бы тоже какое-никакое значение. Вот в этом наверное и спорный момент. Но всё равно меня коробит, что представляемое значение, т.е. '' можно приравнить к NULL.

zya369

+1
тоже всегда убивало :grin:

pitrik2

Но всё равно меня коробит, что представляемое значение, т.е. '' можно приравнить к NULL.
а вот какие приколы бывают у новичков:
insert into t values (1, '');
select id, name from t where name = '';
0 rows
прикол в том, что NULL ничему не равен из правил SQL-логики
надо писать так:
select id, name from t where name is null;
[1, NULL]
1 rows

mbolik1

а вот какие приколы бывают у новичков:
Будем честными эти новички и = NULL пытаются писать.

katrin2201

и в индексах null поискать
и nvl(bla, a) = a работает быстрее чем is null
и ...

Ira2709

Вопрос по SQL: я хочу сделать выборку,а потом объединить ее с другой таблицей. То есть к примеру:
(select class,min(launched) as launched from where not launched is NULL group by class) a (а потом)
a inner join classes on classes.class=a.class
Но тут выдается ошибка рядом со словом join. Как такое обходиться?

zya369

Но тут выдается ошибка рядом со словом join. Как такое обходиться?

отодвинуть слово join по-дальше от сообщения об ошибке не помогает?

Ira2709

Вот точный код:
select c.class,c.la
from (select class as cl,min(launched) as la from ships group by class) a, (a join classes on classes.class=a.cl) c
Ошибка :Incorrect syntax near 'c'. Отодвигание не помогает

Maurog

select c.class,c.la
from (select class as cl,min(launched) as la from ships group by class) a, (a join classes on classes.class=a.cl) c
а в таком духе не заведется?:)

select c.class, c.la
from (select class as cl, min(launched) as la from ships group by class) a
join classes c on classes.class=a.cl

кстати, поздравляю, вы уже перешли от теории к практике :)

Ira2709

Спасибо. Так легче. Читать просто теорию кода немного тяжело,без практики.
Код не завелся.Заработал такой:
select class, la
from select class as cl, min(launched) as la from ships group by class) a FULL join classes on classes.class=a.cl)
А этот нет:
select s.class, s.la
from select class as cl, min(launched) as la from ships group by class) a FULL join classes on classes.class=a.cl) s

Ira2709

После еще нескольких упражнения понял, что системе не нравится,когда таблицу,полученную в результате объединения посредством join, потом дают имя

mbolik1

А чем такой код не устраивает:

select class, la
from (select class as cl, min(launched) as la from ships group by class) a
FULL join classes on classes.class=a.cl

Ira2709

Устраивает. Только почему компилятору не нравится объявление обединения?

mbolik1

Для начала можно считать что во FROM может стоять только таблица или подзапрос, в твоём первом запросе можно снять внешние скобки и тогда он удовлетворяет этому требованию, во втором запросе снять внешние скобки мешает буква S.
Если ты хочешь как-то поименовать результат объединения то можешь сделать из него подзапрос, например так:

select s.class, s.la
from ( select *
from (select class as cl, min(launched) as la from ships group by class) a
FULL join classes on classes.class=a.cl
) s
Оставить комментарий
Имя или ник:
Комментарий: