Как отобразить этот столбец из другой таблицы? - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть две таблицы:

КНИГА

BOOK_CODE   TITLE   PUBLISHER_CODE   TYPE   PRICE   PAPERBACK
---------   -----   --------------   ----   -----   ---------
  0189      Magic        FA          HOR    7.99      Yes
  0378     Venice        FA          ART    24.50     No
  0808    The Edge       JP          MYS    6.99      Yes
  6128      Jazz         PL          FIC    12.99     Yes
  0200      Start        HQ          FIC    8.99      Yes

ИНВЕНТАРЬ

BOOK_CODE   BRANCH_NUM     ON_HAND
---------   ----------     -------
  0189           1            2
  0189           2            2
  0200           1           11
  6128           3            7

Я хотел отобразить название, код книги и общее количество доступных копийдля каждой книги.

Я могу сделать их отдельно ... Я могу получить номер каждой книги и код книги с помощью:

  SELECT inventory.book_code,
         SUM(on_hand)
    FROM inventory
GROUP BY inventory.book_code;

Но как мне получить название для отображения далеек этим результатам?Я попытался использовать соединение и попытался выбрать его в исходном операторе выбора, но я получил ошибку «не выражение GROUP BY».

Ответы [ 3 ]

3 голосов
/ 15 ноября 2011

Используйте производную таблицу для получения суммы - в этом примере используется соединение OUTER на тот случай, если вы хотите просмотреть книги без каких-либо записей INVENTORY:

   SELECT b.title,
          b.book_code,
          COALESCE(x.numOnHand, 0)
     FROM BOOK b
LEFT JOIN (SELECT i.book_code,
                  SUM(on_hand) AS numOnHand
             FROM INVENTORY i
         GROUP BY i.book_code) x ON x.book_code = b.book_code

В противном случае вы можете использовать ВНУТРЕННЕЕ объединение.

2 голосов
/ 15 ноября 2011
select b.title, b.book_code, sum(i.on_hand) as total_copy
from inventroy i, book b
where i.book_code = b.book_code
group by i.book_code, b.title
2 голосов
/ 15 ноября 2011

Просто join две таблицы вместе, а затем обновите свой group by.

SELECT i.book_code, b.title, SUM(i.on_hand)
FROM inventory i
    LEFT JOIN book b on b.book_code = i.book_code
GROUP BY i.book_code, b.title;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...