Я пытаюсь получить таблицу вернулась с «взвешенным счетом» с формулой, я предназначенной для каждого типа по следующей схеме:Как получить список «баллов» для каждого типа из SQL-запроса?
любимый: USERID, drinkName
история: идентификатор пользователя, drinkName
напиток: имя, схема проезда, тип
пьяница: idNum, идентификатор пользователя, пароль
Пусть каждый напиток в истории стоит 0,666 очков, и каждый напиток в любимой стоит 1 пои нт.
поэтому каждый раз, когда говорят, что напиток с видом водки появляется в истории, 0.666 следует добавить к числителю для определенного идентификатора пользователя. И 1 балл для фаворитов водки. Затем его следует разделить на общее количество напитков, которое имеет идентификатор пользователя в обоих фаворитах и истории.
Так, например, у меня есть 3 водок в истории и 2 в избранном, она должна быть: (3 (0,666) +2)/5
И запрос должен возвращать это для всех «типов» Напитки у меня есть с величайшим на вершине.
я в настоящее время этот вопрос:
SELECT (
(SELECT COUNT(*)
FROM Drink D JOIN History H ON H.drinkName = D.name
WHERE type = 'vodka' AND userID = 'sai')
+
(((SELECT COUNT(*)
FROM Drink D JOIN Favorite F ON F.drinkName = D.name
WHERE type = 'vodka' AND userID = 'sai'))*0.666))
/
((SELECT COUNT(*) FROM History WHERE userID = 'sai')
+
(SELECT COUNT(*) FROM Favorite WHERE userID = 'sai'))
Однако это только возвращает для определенного типа напитка, но не таблицы каждого типа напитка.
Вы помечены как MySQL и SQL-сервер ... который один это? – dazedandconfused
извините, что это было случайно, его единственный mysql – user2981811
Рассмотрите возможность предоставления надлежащих DDL (и/или sqlfiddle) ВМЕСТЕ С ЖЕСТКОЙ РЕЗУЛЬТАТОМ – Strawberry