2016-11-04 16 views
0

私はいくつかのMySQLを学ぼうとしており、私はジョイントのポイントを得ました。それは私の頭をしています。私はMySQL Joinを全く理解していません。私は立ち往生しています

私はいくつかの演習を持っています。このため

現在の運動コール:

注文日、注文番号と に出荷注文の荷主の会社名を表示するように(すなわちINNER JOIN構文を使用していない)、プリ1994 SQLの構文を使用します。ポルトガル。注文日の昇順で出力をソートします。

私は現在、この入力した:

SELECT OrderDate, OrderID, ShipperID FROM Shippers Orders 
WHERE shippers.shipperID = orders.shipperID AND orders.shipcountry = 'Portugal'; 

をしかし、私はこのエラーメッセージ取得しています: エラーコード:1054不明な列を「受注日」「フィールドリスト」に

を私が間違って何をやっています?また、皆さんが私を助けてくれるように私は何を提供することができますか?

受注日は、あなたがだから私はそれが似ていますが、別の参加のプロセスであると想像 enter image description here

「受注から選択*」ここでの私のスクリーンショットから、ここで見ることができるように、存在しません。

ありがとうございます!

+0

一部のシステムでは、カラム名とテーブル名で大文字と小文字を区別することがありますので、それらを試してみてください。そのためにエラーが発生している可能性がありますか? – tadman

+0

これはボッカーの割り当てです。とにかく、コンマがないと、あるテーブル名が別のテーブル名になるのです – Strawberry

+0

ありがとう@Strawberry、私はコンマを付けました。私は今このエラーが発生します:エラーコード:1052。フィールドリストの列 'ShipperID'があいまいです – purplemonkeydishwasher

答えて

0

どの列がどのテーブルに属しているかを識別するために、列名にテーブル名を使用する必要があります。

SELECT orders.OrderDate, orders.OrderID,shippers.ShipperID FROM Shippers, Orders 
WHERE shippers.shipperID = orders.shipperID AND orders.shipcountry = 'Portugal'; 

または、エイリアシングを使用すると簡単にクエリを記述できます。

SELECT b.OrderDate, b.OrderID, a.ShipperID FROM Shippers a, Orders b 
    WHERE a.shipperID = b.shipperID AND b.shipcountry = 'Portugal'; 

希望すると、これが役立ちます。

+0

"You列名でテーブル名を使用する必要があります " - より多くのように読む必要があります:"列参照で範囲変数参照を使用する必要があります ";また、範囲変数名を明示的に指定しないと、 – onedaywhen

+0

"あなたはエイリアシングすることができます" - テーブルの名前である(おそらくもっと長い)既定の参照を入力するのを避けるために範囲変数名を指定することができると思います。 – onedaywhen

+0

"toどの列がどのテーブルに属しているかを特定する " - 実際には、range変数はa * row *を参照します。 – onedaywhen

0

このように使用できます。

SELECT o.OrderDate, o.OrderID, s.ShipperID FROM Shippers s, Orders o 
WHERE s.shipperID = o.shipperID AND o.shipcountry = 'Portugal'; 
0

Use the pre-1994 SQL syntax

(日付が間違っているものの、おそらく1989でなければなりません)トレーニングコースは、長い道のりの周りにあなたを取っているような音!

ここでの教訓は、(別名CROSS JOIN外側コア標準SQLのまま1992用語を使用する)2つのテーブル間の関係製品の操作を行うことは何を明確にするために、フォーム<range variable reference>.<column reference>でSQLのドット修飾参照を使用することができ強制ということですそれ以外の場合は列の参照が重複しています(たとえば、両方のテーブルにshipperIDがある場合)。

最終的な宛先はNATURAL JOINで、範囲変数の必要性は完全に免除されていると思います!

関連する問題