2016-10-23 11 views
0

入力された本が利用可能かどうかを確認しようとしています。私はすべての本が追加されたBOOKテーブルを使用しました。 BORROWEDという別のテーブルがあり、Issuedate,Returndateという表があります。ここでは、クエリライブラリのブックの可用性を確認するSQL Serverクエリ

select * 
from BORROWED, BOOK 
where BookCode = ? 
    and BORROWED.BookCode = BOOK.BookCode 
    and BORROWED.Returned is null 

しかし、このエラーを示す次のとおりです。

あいまいな列名 'BookCode'

+3

:エラーのこれらのタイプは、あなたのクエリで別名を使用に慣れないようにするには、[悪い習慣をキックする:古いスタイルを使用してJOINを](http://sqlblog.com/blogs/aaron_bertrand/archive/ 2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) - 古い*スタイルのコンマ区切りのテーブル*スタイルのリストが*適切な* ANSI 'JOIN'構文に置き換えられましたANSI - ** 92 ** SQL標準(** 20年以上前**)で、その使用は推奨されていません –

答えて

2

あなたは両方のテーブルにBookCodeという列を持っています。あなたはテーブルに名前を付ける必要があります。さもなければ、DBエンジンはあなたが意味するものを知らない。

SELECT * 
FROM BORROWED 
JOIN BOOK ON BORROWED.BookCode = BOOK.BookCode 
WHERE BORROWED.BookCode = ? 
    AND BORROWED.Returned IS NULL 
0

あなたは別名を使用して、エラーメッセージが原因の両方あなたのテーブルが同じカラム名を持っているという事実のために生成されていることを

SELECT `b`.* 
    FROM `BORROWED` `b` 
    INNER JOIN `BOOK` AS `c` ON `c`.`BookCode` = `b`.`BookCode` 
    WHERE `b.`BookCode` = ? 
    AND `b`.`Returned` IS NULL 
0

に参加することができます。

SELECT * 
    FROM BORROWED AS br 
     JOIN BOOK AS b 
      ON b.BookCode = br.BookCode 
      WHERE 
       br.BookCode = ? 
      AND br.Returned IS NULL 
関連する問題