2016-03-29 14 views
0

SuppliersテーブルSQL列選択

Part Number Supplier 

    XXX  A   
    XXX  B 
    YYY  C 

Part Numbersテーブル

PK_ID Part Number 

    1  XXX 
    2  YYY 

私はPart NumbersからPK_IDに基づいて追加の列FK_IDでそれを選択したい:

FK_ID Part Number Supplier 

    1  XXX  A   
    1  XXX  B 
    2  YYY  C 

Whで動作しません:

答えて

1

FROM句にカンマを使用しないでください。明示的なJOIN構文を常にを使用します。

SELECT s.`Part Number`, s.Supplier, p.PK_ID` 
FROM Suppliers JOIN 
    `Part Numbers` p 
    ON s.`Part Number` = p.`Part Number` ; 

あなたが名前をエスケープする必要はありませんので、私は、スペースを入れずに、あなたのテーブルやカラムに名前を付けることをお勧めします。 SQLステートメントにたくさんのバッククォートを入れなければならないのは、クエリの作成や読み込みのための気が散るだけです。

+0

が正しいです。また、将来、列と表に名前を付けるときにはすべて小文字を使用し、名前のスペースはアンダースコアで置き換えてください。たとえば、部品番号をpart_numberに変更するか、部品番号テーブルの名前を部品だけに変更し、次に部品番号列に番号を付けて問い合わせを行うと、読みやすくなります。 (part.number)。 – dane

+0

それは動作します!対応するIDが 'PK_ID'で自動的に生成される' FOREIGN KEY'カラム 'FK_ID'を追加することはできません。 – SQLnoob

0

試してみてください。

SELECT s.`Part Number`, s.`Supplier`, p.`PK_ID` 
FROM `Suppliers` AS s 
JOIN `Part Numbers` AS p ON s.`Part Number` = p.`Part Number` 
0

あなたが許可されていないクエリでJOIN前にコンマのを使用しています。あなたは、同じ列名を持っているので、あなたの代わりに使用し、自然に参加できPart Number

SELECT `Part Number`, Supplier, PK_ID 
    FROM Suppliers NATURAL JOIN 
`Part Numbers`; 

避け列の名前を接合するために_代わりに使うスペースから成る列名を使用して

詳細は、与えられたリンクを参照してください。Naming Conventions

Mysql table and column (field) naming conventions