2012-04-16 3 views
0

я получил 2 таблицы на БД MySQLнемного сложнее MySQL запрос

auctions: 

seller: seller id 
transaction_date: unix timestamp 


comments: 

seller: seller id 
rating (-1, 0, 1) 
comment_date: unix timestamp 

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

Я хочу, чтобы получить еще два столбца, как это:

аукционы:

продавец, транзакционные, seller_rating, num_of_comments

какие-либо идеи? благодарит заранее.

ответ

3

Возможно, что-то вроде следующего. В принципе, вы создаете таблицу, в которой перечислены все соответствующие комментарии с каждой транзакции, а затем выполнить подсчет оттуда:

SELECT auctions.seller, auctions.transaction_date, SUM(comments.rating) AS seller_rating, COUNT(comments.comment_date) AS num_of_comments 
    FROM auctions 
    LEFT OUTER JOIN comments 
    ON auctions.seller = comments.seller 
    WHERE auctions.transaction_date > comments.comment_date 
GROUP BY auctions.seller, auctions.transaction_date 
+2

'SUM (comments.rating) AS seller_rating , COUNT (comments.comment_date) AS num_of_comments' –

+0

Я думаю, это справедливо. Я также забыл «GROUP BY». Исправлена. – VeeArr

1

Это должно сделать это:

SELECT 
    a.seller, 
    a.transaction_date, 
    SUM(c.rating), 
    COUNT(*) 
FROM auctions a 
LEFT JOIN comments c on c.seller = a.seller AND c.comment_date <= a.transaction_date 
GROUP BY a.seller 
Смежные вопросы