2016-04-23 21 views
0

次のSQL文は、CustomerID=4( "Around the Horn")という顧客からのすべての注文を選択します。 CustomersテーブルとOrdersテーブルを使用し、テーブルの別名をそれぞれcoとします。 (ここでは、SQLを短くするためにエイリアスを使用している):SQLエイリアスでクエリを持つ

SELECT o.OrderID, o.OrderDate, c.CustomerName 
    FROM Customers AS c, Orders AS o 
WHERE c.CustomerName="Around the Horn" 
    AND c.CustomerID=o.CustomerID; 

あなたは、私は完全な初心者です考えると、この構文を説明していただけます。

+0

どのDBMSを使用していますか? (標準)SQLでは "Around the Horn"は列名です。文字列定数の場合は、一重引用符を使用する必要があります: ''Around the Horn'' –

答えて

0

SELECTステートメントでは、必要なテーブルの列を指定します。同じ列名を持つテーブルがさらにある場合は、テーブル名(tableName.columnName)も指定する必要があります。

FROMステートメントでは、データを選択するテーブルを指定します。このクエリでは、コンマから区切られた2つのテーブルがありますが、正しい方法で2つのテーブルをマージするステートメントがJOINであるため、これはお勧めできません。

最後にWHEREステートメントを使用すると、条件を指定してデータをフィルタリングできます。このクエリでは、name = 'Around the Horn'の顧客のみを必要とし、顧客テーブルと注文テーブルで同じ顧客IDを持つ行のみを選択するように指示します。 この最後の条件はFROMで結合条件を指定する必要があります。

FROM Customer AS c JOIN Orders AS o ON c.CustomerID = o.CustomerID 

それ以外の場合は、カンマを使用してFROMで、それは2つのテーブル間のデカルト積を行い、その後、第2 WHEREでのみ正しい行を選択調子。

初心者のためのSQLガイドを読むことをお勧めします

0

SQLの可変パラメータは何ですか?それが "ホーンの周りの"テキストの場合、SQLは正しいです。とにかく、idsをフィルタリングする方が良いでしょう。このようにするためにクエリを起動する前にID 4を持っている方が良いでしょう。

SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Customers AS c, Orders AS o WHERE c.CustomerId=4 AND c.CustomerID=o.CustomerID; 

正確に説明したいことはありますか?あなたはすでにそれをうまく説明しました:)

同じ列名(あなたのものと同じ)を持つテーブルが存在する可能性のあるSQLで簡略化したり使用したりする場合は、別名「tableAlias」を付けます。あなたはどのテーブルから列を使用して設定する列の前に。他の方法では、 "あいまいに定義された列"のエラーを生成する可能性があります。

乾杯。

関連する問題