2012-06-19 14 views
-1

У меня есть две таблицы, продукты и продажи. В таблице продуктов все пользователи добавляют продукты. А когда продается продажа, таблица продаж обновляется со всей информацией о продукте, включая пользователя, добавившего этот продукт.Mysql сортировка таблицы на основе другой таблицы

продукты Таблица

id|Product Name|User|Price|Date

Таблица продаж

id|Product Name|Quantity|Seller|Price

Где продавца и пользователя имеют одинаковое значение

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

+2

Вы уже написали свою модель? В этом случае вы могли бы создать [SQLFiddle] (http://sqlfiddle.com/) с некоторыми макетными данными? –

+1

Просто подсчитайте количество продавцов на одного пользователя и закажите по этому столбцу –

+1

PLease уточните «Теперь я хочу запросить все продукты таким образом, чтобы пользователь, который продал один или несколько продуктов, должен был быть на вершине, второй должен на второй место и 3-е место на 3-м месте и т. д. » –

ответ

3

так это только имя таблицы и имя столбца предположение:

SELECT a.UserID, 
     Count(a.ProductID) as TotalCount 
    FROM Sales a INNER JOIN Products b 
      ON a.ProductID = b.ProductID 
GROUP BY a.UserID 
ORDER BY TotalCount desc 

Идентификатор_пользователь является И.Д. человека, который продает продукт
ProductID является идентификатором вашего продукта и является поле, которое соединяет две таблицы.
COUNT() - это имя функции Aggregate, которая учитывает записи для каждого пользователя.

PS: Пожалуйста, включите в свой вопрос схему вашего стола.

UPDATE 1

Если это так, то вам придется использовать LEFT JOIN:

SELECT a.ProductName, 
     COUNT(b.Seller) as TotalSellerCount 
    FROM Products a LEFT JOIN Sales b 
     ON a.User = b.Seller 
GROUP BY a.ProductName 
ORDER BY TotalSellerCount desc 
+0

Я попробовал что-то подобное, но в этом вопросе я получаю единственный продукт, для которого у меня есть запись о продаже. Другие продукты, не имеющие продажи, не будут отображаться. Я хочу все продукты, но чтобы пользователь, у которого больше продаж, должен быть наверху. – user1465810

+0

@ user1465810 Я обновил ответ, используя 'LEFT JOIN' –

+0

Он работает. благодаря – user1465810

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