Nano Hash - криптовалюты, майнинг, программирование

SQL — объединение нескольких таблиц?

Я пытаюсь объединить несколько таблиц, чтобы создать список заказов на покупку с их общей стоимостью. Я попытался выполнить инструкцию SELECT, которая возвращает ошибку «OA». «AIRCRAFT_CODE» INVALID IDENTIFIER»

SELECT al.airline_code AS “Airline Code”, 
    po.purchase_order_no AS “Order Number”,
    ac.aircraft_code as “Aircraft Code”,
    oa.aircraft_quantity as “Quantity of Aircraft Ordered”,
    SUM(oa.aircraft_quantity * ac.aircraft_price) AS “Order Total”
FROM Aircraft ac, Airline al, Ordered_Aircraft oa, Purchase_Order po
    JOIN Airline al ON po.airline_code = al.airline_code
    JOIN Aircraft ac ON oa.aircraft_code = ac.aircraft_code
    JOIN Purchase_Order po ON oa.purchase_order_no = po.purchase_order_no
GROUP BY po.purchase_order_no
ORDER BY al.airline_code ASC;

Структура базы данных следующая:

самолет

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 AIRCRAFT_CODE                             NOT NULL VARCHAR2(5 CHAR)
 AIRCRAFT_TYPE                             NOT NULL VARCHAR2(30 CHAR)
 AIRCRAFT_PRICE                            NOT NULL NUMBER(11,2)

авиакомпания

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 AIRLINE_CODE                              NOT NULL VARCHAR2(4 CHAR)
 AIRLINE_NAME                              NOT NULL VARCHAR2(20 CHAR)
 AIRLINE_ADDRESS                           NOT NULL VARCHAR2(100 CHAR)
 AIRLINE_CITY                              NOT NULL VARCHAR2(20 CHAR)
 AIRLINE_COUNTRY                           NOT NULL VARCHAR2(20 CHAR)

заказанный_самолет;

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 PURCHASE_ORDER_NO                         NOT NULL NUMBER(3)
 AIRCRAFT_CODE                             NOT NULL VARCHAR2(5 CHAR)
 AIRCRAFT_QUANTITY                         NOT NULL NUMBER(2)

заказ на покупку

 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------

 PURCHASE_ORDER_NO                         NOT NULL NUMBER(3)
 AIRLINE_CODE                                       VARCHAR2(4 CHAR)
 PURCHASE_ORDER_DATE                       NOT NULL DATE

Любая помощь будет здорово. Спасибо.

31.01.2014

  • использовать соединение для таблицы oa 31.01.2014
  • никогда не смешивайте неявные ct и явные соединения. Конечно, вы никогда не должны использовать неявные соединения с самого начала, так как это очень плохая практика. 31.01.2014

Ответы:


1

Возьмите таблицы, к которым вы присоединяетесь, из списка после FROM:

SELECT 
    al.airline_code AS “Airline Code”, 
    po.purchase_order_no AS “Order Number”, 
    ac.aircraft_code as “Aircraft Code”, 
    oa.aircraft_quantity as “Quantity of Aircraft Ordered”, 
    SUM(oa.aircraft_quantity * ac.aircraft_price) AS “Order Total”
FROM Ordered_Aircraft oa   /*  , Airline al, Ordered_Aircraft oa, Purchase_Order po */   <---
JOIN Purchase_Order po
    ON oa.purchase_order_no = po.purchase_order_no
JOIN Airline al 
    ON po.airline_code = al.airline_code
JOIN Aircraft ac
    ON ac.aircraft_code = oa.aircraft_code
GROUP BY po.purchase_order_no
ORDER BY al.airline_code ASC;

Использование списка таблиц, разделенных запятыми, представляет собой другой синтаксис JOIN. Если вы используете JOIN, нет необходимости ссылаться на них снова.

31.01.2014
  • Этот запрос неверен, так как SQL не знает, что такое oa в данный момент, посмотрите на ошибку, которую он дает, вместо переформатирования 31.01.2014
  • Да, к сожалению, @Mazzy прав. Он не распознает идентификаторы, поскольку они не указаны. 31.01.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..