2016-03-29 3 views
0

Suppliers таблицаSQL выберите столбец из другой таблицы с соответствующим значением

Part Number Supplier 

    XXX  A   
    XXX  B 
    YYY  C 

Part Numbers стол

PK_ID Part Number 

    1  XXX 
    2  YYY 

Я хочу, чтобы выбрать его с дополнительным столбцом FK_ID на основе PK_ID из Part Numbers:

FK_ID Part Number Supplier 

    1  XXX  A   
    1  XXX  B 
    2  YYY  C 

Wh на не работает:

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

ответ

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` ; 

Я хотел бы призвать вас назвать свои таблицы и столбцы без пробелов, так что вам не нужно, чтобы избежать имен. Необходимость положить кучу backticks в SQL-заявлении - это просто отвлечение для написания или чтения запроса.

+0

Правильно. Кроме того, в будущем вы должны попытаться использовать все строчные буквы при именах столбцов и таблиц, а также заменить свои пробелы в именах символом подчеркивания. Например, номер детали должен быть переименован в part_number или таблица номеров деталей должна быть переименована в просто части, а затем вы можете назвать столбец номера детали, чтобы просто указать номер, тогда в вашем запросе он будет более читабельным, т.е. (номер части). – dane

+0

Он работает! Невозможно просто добавить столбец 'FOREIGN KEY'' FK_ID', который автоматически заполнит собой соответствующую форму ID 'PK_ID'? – SQLnoob

0

Try:

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

Смежные вопросы