0

「Persons」というテーブルと「Product_Orders」という別のテーブルがあるとします。それぞれ「p」と「po」のテーブルエイリアスを指定します。

ここで、「OlaHansen」が担当するすべての注文を一覧表示します。

次のSELECTステートメントを使用します。

SELECT po.OrderID, p.LastName, p.FirstName 
FROM Persons AS p, Product_Orders AS po 
WHERE p.LastName='Hansen' AND p.FirstName='Ola'

OrderIDと混同しているのは、そのようなものと比較されていないためです。

SELECT po.OrderID, p.LastName, p.FirstName 
FROM Persons AS p, Product_Orders AS po 
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
  AND po.OrderID = p.OrderID.

私が間違っている?

4

3 に答える 3

5

ここで示されているのはjoinですが、使用している Web サイトは古い暗黙の結合構文 (コンマを使用) を教えています。この構文はお勧めしません。代わりにJOINキーワードを使用してください。

サイトをチェックしたところ、元のサンプル コードが何であるかがわかりました (あなたの質問ではわかりません)。

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'

結合条件を追加するのを忘れていました!

JOIN代わりに、次のように記述します。

SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p
JOIN Product_Orders AS po
ON po.PersonId = p.Id
WHERE p.LastName = 'Hansen' AND p.FirstName = 'Ola'

po.PersonId = p.Idこれで、条件が 2 つのテーブル間の関係を指定し、それらを結合する方法を示していることがはっきりとわかります。キーワードを使用することの多くの利点の 1 つはJOIN、結合条件を書き忘れることが困難であり、それが欠落していることが明らかであることです。

w3schools.com をチュートリアルとして使用することは避けてください。このサイトには、多くのエラーや悪い慣行が含まれています。

于 2012-06-11T19:41:44.637 に答える
0
SELECT po.OrderID, p.LastName, p.FirstName 
FROM Persons AS p, Product_Orders AS po 
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
  AND p.PersonID = po.PersonID
于 2012-06-11T19:41:31.780 に答える
0

そうです、最初のクエリでは、最初のテーブルの各行が 2 番目のテーブルの各行と結合されています。これにより、各注文の結果が得られます (注文が Ola Hansen に属しているかどうかは無視されます)。

ただし、テーブル Persons に注文への外部キーが含まれているとは思えません。のような句

SELECT po.OrderID, p.LastName, p.FirstName 
FROM Persons AS p, Product_Orders AS po 
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
AND po.PersonID = p.PersonID

Product_Orderds の各行に、注文を行った Person への外部キーが含まれていると仮定すると、より賢明です。

于 2012-06-11T19:46:08.563 に答える