2017-09-20 3 views
-1

データベースでWHERE&オーダーと結合:(間違い-順序によって、現在のマイルCUSTOMERNAMEグループで(1 =)私はすべてのリース車を取得したいSQL - 複数の

Car:       Contract:   Customer: 
    Carplate (PRKEY)    Contractid(PRKEY) CustomerID(PRIK) 
    PRICE       Miles    Customername 
    Leased(0Free- 1Leased)  Carplate(FKEY)  Zipcode 
                ContractID FKEY) 
                Carplate(FKEY) 

by)お客様の郵便番号

構文

SELECT * 
FROM table1 INNER JOIN table2 ON 
    table1.primaryKey=table2.FKEY INNER JOIN 
    table3 ON table2.primaryKey=table3.FKEY 

問題:私はINNERのpropperの使用ここでは、JOINとWHERE句を理解していません。

Select Car.Leased, Contract.Miles, Customer.Customername, Customer.Zipcode 
From Car 
INNER JOIN Contract on Car.Carplate = Contract.Carplate 
INNER JOIN Customer on Contract.Carplate = Customer.Carplate 
where Car.Leased = 1 
order by Customer.Zipcode ASC 

構文でコードを作成しようとしました。それはそうです?

+1

よく見えます。期待した結果が得られますか? – jarlh

+0

'JOINs'は、' INNER、OUTER、LEFT、RIGHT、 'などの型に応じて、関連するテーブルの行のいくつかの組み合わせを作成することになります。' where'節は関連するものをフィルタリングします。 –

+0

紙で学ぶIam。 –

答えて

1

私はpropperのINNERの使用ここではJOINとを理解していないところ 句

INNER JOIN1特定のテーブルから共通データのデータを絞り込むます二つのテーブルとWHERE句の間を返します。 。

私は、顧客の郵便番号で(= 1)、現在のマイルと、 CUSTOMERNAMEとグループのすべてのリース車を取得したいです。

order by Customer.Zipcode ASCです。私はテーブル構造を読んでいる道を車が今までであれば、Carplateは、複数の顧客のために現れる可能性が - だから、GROUP BYの違いとORDER BY

+0

もっと具体的な質問: 車、なぜお客様と契約ではないのですか? 2番目: 構文は常にこのようですか? = t1.primarykey = t2.fkey t2.fkey = t3.fkey? –

+0

@ChrisLiは?あなたは何が欠けているのかを指摘する必要があります – Ravi

0

があるそれはあなたがまたのContractIDを使用して、Customerテーブルに参加したいと思うようになります。再販売された。あなたは、Leased = 1のレコードしか取得していないことを知っているので、必ずしもLeasedを選択する必要はありません。ただし、それを健全性チェックとして保持したい場合は、害はありません。

SELECT Contract.Miles, Customer.Customername, Customer.Zipcode 
FROM Car 
INNER JOIN Contract ON Car.Carplate = Contract.Carplate 
INNER JOIN Customer ON Contract.Contractid = Customer.ContractID AND 
Car.Carplate = Customer.Carplate 
WHERE Car.Leased = 1 
ORDER BY Customer.Zipcode ASC 
+0

ああ、 ですので、結果を得るために「最後の」内部結合で各テーブルを比較する必要があります。 構文のように: からt1 INNER JOIN t2 on t1 .PRIK = t2.FKEY t2.FKEY = t3のINNER JOIN t3 FKEY && t2.FKEY = t3.FKEY 正しいですか? –

+0

必ずしもそうではありません。それはすべてあなたが参加している特定のテーブルに依存します。 t1には外部キーを使用してt2を、t2には外部キーを使用してt3を持ちますが、t1とは関係なく、すべて3に参加できます。 –

+0

ああ、この場合は最後の比較が必要です車の "所有者"ではなく、すべての古い "車の所有者"ではありません。 –