2016-11-11 11 views
0

データベースに3つのテーブルがあります(括弧内に必要なカラムがあります)。3つのテーブルから結合する

  • Alphadata(請求書、DateRaised、金額、スタッフ)

  • TL認証(請求書)

  • エージェント(チームリーダー)

私は現在よコードこれらの列をすべて1つのクエリにまとめるために使用しようとするのはこれです。

SELECT Alphadata.Invoice, Alphadata.DateRaised, Alphadata.Amount, Alphadata.Staff, Agents.TeamLeader, TlAuth.Invoice 

FROM Alphadata 

INNER JOIN TlAuth ON Alphadata.invoice = TlAuth.invoice 

INNER JOIN Agents.Alphaname = Alphadata.Staff; 

私は何かを逃したと思います。しかし、エージェント(最後の行)を削除すると、AlphaDataとTL Authの列が表示されますが、2番目の行には、誤った行が追加されます。

答えて

0
SELECT Alphadata.Invoice, Alphadata.DateRaised, Alphadata.Amount, Alphadata.Staff, Agents.TeamLeader, TlAuth.Invoice 
    FROM (Alphadata 
    INNER JOIN TlAuth ON Alphadata.invoice = TlAuth.invoice) 
    INNER JOIN Agents ON Agents.Alphaname = Alphadata.Staff; 

上記で試してみてください。 ON句を省略すると、エージェントとアルファデータのデカルト積が生成されます。デカルト製品hereについて詳しく読むことができます。

EDIT 1:あなたのコメントから、あなたはMS Accessを使用していると思いますか?もしそうなら、複数の括弧が必要な場合は括弧が必要です。JOIN - see here。私は上記のクエリでそれらを追加しました。もう一度お試しください。

+0

ええ、これをコピーしましたが、構文エラー(オペレータが見つかりません)が表示されます。 100%ではありませんが、これを読んで問題が正しいものを目指しています! – Nik

+0

MS Accessを使用していますか? –

+0

@Nik上記の変更をもう一度お試しください。 –

1

あなたは、テーブルの名前と、この行でON逃した:あなたが第二と第三のテーブルの結合条件を欠落していた

INNER JOIN Agents ON Agents.Alphaname = Alphadata.Staff; 
+0

私はちょうどそれを追加しました、そして今、構文エラー(オペレータがありません)を得ているようです。他のどこかで何かが間違っているかもしれないと思っていますか? – Nik

0

を。また、表の別名を使用すると、SQL問合せを作成するときにも優れたマイレージが得られます。以下の修正されたクエリでは、クエリの3つのテーブルのエイリアスがあることに注意してください。次に、これらのalisesを使用してさまざまな列を参照することができ、クエリは読みやすくなります。

SELECT t1.Invoice, 
     t1.DateRaised, 
     t1.Amount, 
     t1.Staff, 
     t2.Invoice, 
     t3.TeamLeader, 
FROM Alphadata t1      -- t1, t2 and t3 are aliases, or nicknames 
INNER JOIN TlAuth t2     -- for the actual tables in your query 
    ON t1.invoice = t2.invoice 
INNER JOIN Agents t3 
    ON t3.Alphaname = t1.Staff; 
関連する問題