Не уверен, что моя логика работает на этом. У меня есть таблица Documents
, которая имеет уникальный идентификатор для каждого элемента и имя документа. Затем у меня есть другая таблица DocVotes
, которая хранит голоса пользователей по документу (один голос за запись). Поле Vote
является BOOL
(1 для YES и 0 для NO).MySQL JOIN запрос с непредвиденными результатами COUNT
Я пытаюсь проверить, если конкретный пользователь MemberID
проголосовал на документ, прежде чем, очевидно, вы не можете голосовать на свой собственный документ (Проверено исключением AuthorID
)
Вот запрос я пытаюсь
SELECT d.ID, d.Name, COUNT(dv.MemberID)
FROM Documents AS d
LEFT JOIN DocVotes AS dv ON dv.ItemID=d.ID
AND dv.MemberID=32
WHERE d.Status = 'Proposed'
AND d.AuthorID<>32
то, что я думаю, что он должен делать: Получить ID
, Name
и подсчитать число голосов, поданных MemberID
(32 в данном случае) затем просто проверить количество и если счетчик равен 0, то это будет означать, что пользователь еще не проголосовал, если 1 т (они могут голосовать только один раз).
Тем не менее, я возвращаю счет 6, но только 1 голос был сделан этим пользователем над этим конкретным документом. Таким образом, очевидно, что это больше, чем просто запись ... (я только получаю 1 строку назад)
Мысли?
Вам может понадобиться 1) скрипку, чтобы мы могли проверить 2) 'GROUP BY' – fedorqui
Я на самом деле просто попробовал это, и я вернул 6 строк с ожидаемыми результатами. Я оставил «GROUP BY d.ID», и теперь он отлично работает. Это всегда очевидно, что мы получаем ... Спасибо. – SnareChops
Хорошо! Я ответил, чтобы ответить на вопрос. – fedorqui