rishatss
@rishatss
Simple Developer ^)

Как правильно связать таблицы?

Добрый день..
Пытаюсь вывести данные с двух таблиц.
Также хочу вывести количество товаров прогоняя фк - COUNT.
Но тогда выводит только одну строку.
А мне хотелось бы, чтобы выводилось все строки, а количество имел только один элемент.
А у меня все обрезается при запросе.
SELECT OrderDetailID,OrderID,Quantity,p.ProductName,p.Price
FROM [OrderDetails] o
INNER JOIN Products p ON p.ProductID = o.ProductID

Так выводит все что мне надо.
Только не количество, а цену.
Да и хотелось бы выводить название товара и цену его в одной колонке.
Как это можно реализовать?

Когда применяю COUNT. Теряю другие данные:
SELECT OrderDetailID,OrderID,Quantity,p.ProductName,COUNT(p.Price) AS "Kolvo"
FROM [OrderDetails] o
INNER JOIN Products p ON p.ProductID = o.ProductID


Тут учусь:
www.w3schools.com/sql/trysql.asp?filename=trysql_s...
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
А мне хотелось бы, чтобы выводилось все строки, а количество имел только один элемент.

Количество чего? Вы хотите вывести по каждому товару информацию о суммарном его количестве в заказах? если да - тогда зачем Вам в запросе информация о деталях заказа? Если нужно посчитать суммарное количество заказанных товаров это можно сделать так
SELECT p.ProductName, p.Price, o.SummaryQuantity FROM [Products] p
INNER JOIN 
(SELECT ProductID, SUM(Quantity) as SummaryQuantity FROM OrderDetails GROUP BY ProductID) o ON o.ProductId = p.ProductID

Но тогда выводит только одну строку.

Рекомендую почитать про агрегатные функции, что бы понять как они работают. Тогда и вопросы почему выводиться одна строка отпадут.
Да и хотелось бы выводить название товара и цену его в одной колонке.

Вообще это не камельфо, но практически в любой СУБД есть функции конкатенации. Используйте их для реализации этой задаче
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы