2010-04-28 2 views
0

У меня есть 2 таблицы: таблица заказов и таблица заказов. я написал внутреннее соединение:Число повторяющихся элементов для запросов Sql datatables

SELECT Order.id 
    FROM Order 
    INNER JOIN orderDetails 
    ON Order.id=orderDetails.id 

я получил результат, как:

id 
    100 
    100 
    100 
    101 
    101 

Из приведенных выше данных, я хочу, подсчет каждой выходной записи, как:

id count 
    100 3 
    101 2 

Как мне это сделать?

+0

Если какой-либо ответ помог вам, может быть принято, нажав на зеленую галочку рядом с ним. – IsmailS

ответ

2
Select OrderId , Count(*) as [Count] 
from OrderDetials 
Group By OrderId 

OrderId будет ЗАРУБЕЖНЫЕ ключевой столбец ссылок на столбец Order.Id таблицы Order

Если ваши ссылки orderDetails.id Order.id колонка Это будет запрос.

Select id , Count(*) as [Count] 
from OrderDetials 
Group By id 
+2

+1 для определения избыточного соединения. Это не совсем одно и то же, хотя это проблема только в том случае, если есть детали с отсутствующими заказами (что, конечно, маловероятно). –

+0

Да. это верно. В случае, если заказы могут быть не указаны, их можно упустить. +1 для определения исключительного случая. – IsmailS

0
SELECT o.id, COUNT(*) 
    FROM Order   o 
    JOIN orderDetails od ON o.id=od.id 
GROUP BY o.id 
+0

Присоединиться не требуется. Для того, чтобы иметь отношения между двумя таблицами, должен быть столбец внешнего ключа в таблице OrderDetails. Это должно делать работу. – IsmailS

0

Вы должны использовать COUNT заполнитель и предложения GROUP BY.

SELECT Order.id, COUNT(DISTINCT orderDetails.id) 
FROM Order 
INNER JOIN orderDetails ON Order.id=orderDetails.orderId 
GROUP BY Order.id 

Также похоже, что вам нужно слегка изменить условие соединения.

-1

Использование Группа по

SELECT Order.id, count(*) as Count 
FROM Order 
INNER JOIN orderDetails 
ON Order.id=orderDetails.id Group by Order.id 
+0

Вы действительно должны форматировать код как код. –

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