2014-02-11 5 views
0

Я пытаюсь использовать SQL для получения результатов из моей базы данных, но я не могу получить запрос правильно.SQL table join

enter image description here

Выше описания сущностей из моей базы данных, и я хочу получить обратно информацию о цене продукта, количества и деталей, связанных с ним. Таблица ProductParts - это таблица ссылок между Product и Part.

enter image description hereenter image description here

Вот значения в таблице ProductParts и результат, который я хочу обратно. Я попытался с помощью перекрестного соединения, но я не могу показаться, чтобы получить это правильно, я продолжаю получать результаты, как это (ниже)

enter image description here

настоящее время я использую этот запрос

SELECT 
Product.Price, 
Product.Quantity, 
kit_name.PartID as "Kit Name", 
blank_name.PartID as "Blank Name" 
FROM Product 
CROSS JOIN ProductParts as kit_name 
CROSS JOIN ProductParts as blank_name 
WHERE Product.ProductID = 3 
AND Product.ProductID = kit_name.ProductID 
AND Product.ProductID = blank_name.ProductID 

Этот является результатом я вернусь

enter image description here

+0

Вы хотите только одну строку для каждого продукта, даже если есть несколько частей? –

+0

Да, я получаю только одну строку для каждого продукта, и для того, чтобы иметь идентификатор части на этой строке – user2099020

ответ

0

Попробуйте один:

SELECT 
    Product.Price, 
    Product.Quantity, 
    p.PartID AS PartID, 
FROM Product 
INNER JOIN ProductParts as pp 
    ON pp.ProductId=Product.ProductId 
INNER JOIN Parts as p 
    ON p.PartId=pp.PartId 
WHERE Product.ProductID = 3 
0

Простое внутреннее соединение между ProductPart, Product и Part будет работать:

SELECT 
    prod.Price, 
    prod.Quantity, 
    prod.ProductId as "Kit Name", 
    part.PartID as "Blank Name" 
FROM ProductParts pp 
JOIN Product as prod 
on pp.ProductId = prod.ProductId 
JOIN Parts part 
on pp.PartId = part.PartId 
WHERE pp.ProductID = 3