kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 ZAX
ZAX
Вопрос

Вложенность запросов в SQL

Цель моего запроса - вернуть название страны и ее главу государства, если ее глава имеет имя, начинающееся на A, а в столице страны проживает более 100 000 человек, используя вложенный запрос.

Вот мой запрос:

SELECT country.name as country, 
       (SELECT country.headofstate 
        from country 
        where country.headofstate like 'A%')      
from country, city 
where city.population > 100000;

Я пробовал менять его на противоположный, помещать его в предложение where и т.д. Я не получаю вложенных запросов. Я просто получаю ошибки, типа "подзапрос возвращает более одной строки" и тому подобное. Если кто-то может помочь мне с тем, как это упорядочить, и объяснить, почему это должно быть определенным образом, было бы здорово.

13 2012-09-17T21:28:16+00:00 3
 Flexo
Flexo
Редактировал вопрос 23-го марта 2013 в 10:39
Программирование
sql
nested
Этот вопрос имеет 1 ответ на английском, чтобы прочитать их войдите в свой аккаунт.
Решение / Ответ
Erwin Brandstetter
Erwin Brandstetter
17-го сентября 2012 в 9:46
2012-09-17T21:46:22+00:00
Дополнительно
Источник
Редактировать
#17230974

Если необходимо "вложить", то это один из способов сделать свою работу:

SELECT o.name AS country, o.headofstate 
FROM   country o
WHERE  o.headofstate like 'A%'
AND   (
    SELECT i.population
    FROM   city i
    WHERE  i.id = o.capital
    ) > 100000

Хотя JOIN был бы более эффективен, чем коррелированный подзапрос. Может ли быть так, что тот, кто дал вам это задание, сам не в курсе дела?

17
0
Adrian Carneiro
Adrian Carneiro
17-го сентября 2012 в 9:30
2012-09-17T21:30:38+00:00
Дополнительно
Источник
Редактировать
#17230973

Вам нужно объединить две таблицы и затем отфильтровать результат в предложении where:

SELECT country.name as country, country.headofstate 
from country
inner join city on city.id = country.capital
where city.population > 100000
and country.headofstate like 'A%'
8
0
 sqrtsben
sqrtsben
17-го сентября 2012 в 9:46
2012-09-17T21:46:45+00:00
Дополнительно
Источник
Редактировать
#17230975

Как я понимаю, единственное место для вложенного запроса - это предложение WHERE, например.

SELECT country.name, country.headofstate
FROM country 
WHERE country.headofstate LIKE 'A%' AND 
country.id in (SELECT country_id FROM city WHERE population > 100000)

Кроме того, я вынужден согласиться с Адрианом: какого черта вы должны использовать вложенные запросы?

2
0
Похожие сообщества 4
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
3 542 пользователей
Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.
Открыть telegram
sql_ninja
sql_ninja
2 520 пользователей
Канал для тех, кто знает или интересуется SQL 🛢 Взаимная помощь и позитив =) Вакансии тут - @sql_jobs Бан за: оскорбления, спам, фри рекламу, расизм, сексизм. Наш MSSQL канал - @sqlcom По рекламе: @aveLestat
Открыть telegram
SQL JOBS
SQL JOBS
2 144 пользователей
Обязательны: компания, город, позиция, вилка, наличие удалёнки, требования, контакты. Бан за рекламу, сексизм, расизм и неадекватный обсёр объявлений
Открыть telegram
Lazarus : Database (Firebird, mySQL, SQLite, PostgreSQL, ...)
29 пользователей
Базы данных в Lazarus https://t.me/Delphi_Lazarus (по-русски) https://t.me/Delphi_Lazarus_offtop https://t.me/freepascal_en (по-английски) по темам: https://t.me/Lazarus_Database https://t.me/Lazarus_Graphics https://t.me/Lazarus_Android
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 6 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
ID
JA
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией