2014-02-03 2 views
0

У меня есть таблицы, как это:MySQL сортировки по голосам в другой таблице

entries: 

ID  TITLE 
1  Xyhargka 
2  Hypothermia 
3  Scale 

и

votes: 

ID  VOTE1  VOTE2 USERNAME 
1  1   2  Entity 
2  1   3  RobertG 

VOTE1 и VOTE2 имеют идентификаторы записей. VOTE1 рассчитан на 2 голоса, а VOTE2 - на 1 голос.

Я пытаюсь построить запрос, который возвращает это:

ID  TITLE   VOTES 
1  Xyhargka  3 
3  Scale   2 
2  Hypothermia  1 

Я смотрел на РЕГИСТРИРУЙТЕСЬ заявления, но я не могу понять это ... Я знаю, что это ISN» т Прод, но вот псевдокод, что я хочу:

SELECT v1 + v2 as votes, entries.* FROM entries 
    JOIN (SELECT count(vote1) * 2 as v1 FROM votes WHERE vote1 = entries.id) 
    JOIN (SELECT count(vote2) * 1 as v2 FROM votes WHERE vote2 = entries.id) 
ORDER BY votes 
+0

Ваш желаемый результат совсем не соответствует вашему вводу и описанию того, что означают голоса. Пожалуйста, исправьте образец или лучше объясните, что вы намереваетесь. –

+0

@JimGarrison обновлен ... если псевдокод выглядит неправильно, я уверен, что это так. – Entity

ответ

1

Это, как я хотел бы сделать это в SQLSERVER, не уверен, если есть различия для этого в MySQL

SELECT V.ID, 
    SUM(V.COUNT) AS TOTALCOUNT 
FROM (SELECT E1.ID AS ID, 2 AS COUNT 
FROM VOTES AS V 
JOIN ENTRIES AS E1 
    ON V.VOTE1 = E1.ID 
UNION ALL 
SELECT E2.ID AS ID, 1 AS COUNT 
FROM VOTES AS V 
JOIN ENTRIES AS E2 
    ON V.VOTE2 = E2.ID) AS V 
GROUP BY V.ID 
ORDER BY TOTALCOUNT DESC 
+0

Проверено ли это? Он выглядит хорошо, и он работает, но он не возвращает ожидаемые результаты. – Entity

+0

Мне нужно больше информации, чем вам помочь.;) –

+0

Nevermind! Это была моя проблема. Работает отлично, спасибо! – Entity

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