2016-11-11 5 views
0

著者は、販売した書籍の名字、姓および総数をリストする必要があります。だから事実上、私はau_idをtitle_idに接続し、書いた本に対応する売上のSUM(qty)を接続する必要があります。他の3つのテーブルから異なる値を表示するユニークなテーブルを作成する

インナーへの参加が必要ですか?これが私の間違いを受けているような気がします。 おかげ

テーブル: authorsテーブル

+-------+----------+----------+ 
| au_id | au_fname | au_lname | 
+-------+----------+----------+ 

TITLEAUTHORS表

+-------+--------- 
    | au_id |title_id| 
    +-------+--------- 

売上表

+-------+--------- 
    | title_id | QTY | 
    +-------+--------- 

問合せ:

SELECT au_fname, au_lname, TOT FROM(
SELECT au_fname, au_lname FROM authors 
INNER JOIN titleauthors ON authors.au_id = titleauthors.au_id 
INNER JOIN sales on titleauthors.title_id = sales.title_id WHERE titleauthors.title_id IN(
SELECT sales.title_id, SUM(sales.qty) TOT from sales 
group by sales.title_id)) as t 

エラー:

Only one expression can be specified in the select list when the subquery is not introduced with EXISTS. 
Msg 207, Level 16, State 1, Line 29 
Invalid column name 'TOT'. 

答えて

0

は、私の知る限りでは、

は別の声明に参加した後、文がすることはできませんに参加します。

あなたはそのようなTOTを引き出すことはできません。


ここにはあなたの質問があります。

SELECT A.*, TS.title_id, TS.TOT 
FROM AUTHORS A 
INNER JOIN (
    SELECT T.*, S.TOT 
    FROM TITLEAUTHORS T 
    LEFT OUTER JOIN (
     SELECT title_id, SUM(QTY) TOT 
     FROM  SALES 
     GROUP BY title_id 
    ) S 
    ON T.title_id = S.title_id 
) TS 
ON A.au_id = TS.au_id 

これは動作します。

外部結合があるため、

TOTはnullにすることができます。あなたは、IFやデータベースを使って何かを解決することができます。


EDIT

何をしたいことは関係なく、title_idのが何であるかを、各著者の売上の合計である場合は、

は、そのクエリを変更する必要があります。

SELECT A.au_fname, A.au_lname, SUM(TOT) TOT 
FROM (
    SELECT A.*, TS.title_id, TS.TOT 
    FROM AUTHORS A 
    INNER JOIN (
     SELECT T.*, S.TOT 
     FROM TITLEAUTHORS T 
     LEFT OUTER JOIN (
      SELECT title_id, SUM(QTY) TOT 
      FROM  SALES 
      GROUP BY title_id 
     ) S 
     ON T.title_id = S.title_id 
    ) TS 
    ON A.au_id = TS.au_id 
) A 
GROUP BY au_id 

これを試してください。

このクエリで間違っている場合はお知らせください。

+0

これはうまくいきました。私はちょうどau_fname、au_lnameとqtyを表示する必要があります! SELECT A.AU_FNAME、A.AU_lname、TS.tot ?? –

+0

また、なぜいくつかの著者は複数の合計列を持っていますか? –

+0

1.はい。 A.au_fname、A.au_lname、TS.TOT –

関連する問題