2017-03-27 9 views
1

イムはちょうどW3上で、いくつかのSQL演習を行うと、次の文SQL、1文で2つのUSING文節を使用し

SELECT a.ord_no, a.purch_amt, b.cust_name, c.name, 
FROM orders a 
INNER JOIN customer b USING (customer_id) 
INNER JOIN salesman c USING (salesman_id) 

編集に疑問を抱いて:私は、ScaisEdgeからの回答では説明の理由でステートメントdoesntの仕事を間違ったテスト結果を掲載。あなたのコード

FROM orders a 
INNER JOIN customer b USING (customer_id) 
INNER JOIN salesman c USING (salesman_id) 

に探し

+2

の使用を避けるために節に明示的に使用しなければならないので、SQLエンジンは、正しいものを定義することはできませんが、それはおそらく、テーブル構造 –

+0

withouth伝えるのは難しいとの理由2つ以上のテーブルが関わっている場合、どのテーブルを意味するのかを判断することは不可能です。 –

+0

両方のテーブルですべての列名が一意ですか?そうでない場合は、結合を行うために 'ON'を使わなければならないかもしれません。 –

答えて

0

は、あなたが使用して、第2は、顧客や注文のためには、あなたの場合はもっとして2つのテーブル を使用する場合using句が不明瞭であると思われます。..?

あなたはそれはおそらく列名競合のだ曖昧

+0

ええ、私は思ったことですが、私はそれらのどれかを交換すれば、他のUSING句を正しく解釈する方法を突然 "知っている"ということが面白いと思います。 (私がスワップアウトしても関係なく) – Moorli

+0

内部結合節をスワップするのはSQLでは意味がありません。最初のテーブルと2番目のテーブルではありません。スワップはSQLのあいまいさを解決しません。プロシージャは..宣言的な言語です.. 2つ以上のテーブルを使用する場合は、明示的なjoin on句を使用する必要があります。または条件は使用しますが、句を使用しないでください。 – scaisEdge

+0

okもう一度テストしました。 2番目はON句でなければなりません。これは完璧な意味を持ち、まさに私が言ったことです。どういうわけか、私の最初のテストでは、それは私が本当に混乱しているもの、それはdoesnt、thats、それはまた、(別の言葉でUSINGを使用して)別の周りにも働いていたと仮定。 – Moorli

関連する問題