Я не был уверен, что назвать эту проблему, но это не совсем счет строк. Допустим, мы имеем соотношение:Реляционная алгебра для подсчета строк
Competition(compId, sport, playerName, medal)
И допустим атрибут медаль может быть золото, серебро, бронза, или нуль. Итак, мы имеем следующие данные:
(193, Tennis, John Doe, Gold)
(931, Skiing, Mary White, Bronze)
(193, Tennis, Arnold Black, null)
(182, Bobsledding, John Doe, Gold)
(901, Ping-Pong, Adam Brown, Silver)
(248, Bobsledding, Mary White, Silver)
Я имею очень трудно понять, как ответить на этот вопрос: Получить имена всех игроков, которые выиграли больше, чем одну медаль. В этих данных будут ответы Джон Доу и Мэри Уайт. Как я могу получить этот ответ на произвольные данные для этого отношения, используя реляционную алгебру?
(Это упрощенная версия фактической домашней проблемы, и это упрощение представляет (я надеюсь) часть этой проблемы, с которой я борюсь. Существует произвольное и неизвестное количество соревнований, спортивных состязаний и игроков, но только 4 возможности для медали)
Не думайте о подсчете строк. Подумайте о возможности самостоятельного присоединения. – sqlvogel
Сгруппировало бы работу для вас в этом случае? Совокупность имен игроков, а затем фильтра. Например, операция агрегации по схеме (A1, A2, ...An) будет: G1, G2, ..., Gm g f1 (A1 '), f2 (A2'), ..., fk (Ak ') (r) Ссылка: http: //en.wikipedia .org/вики/Relational_algebra –
не реляционная алгебра, но в SQL, это выглядит следующим образом: ВЫБРАТЬ Playername, COUNT (*) от конкуренции GROUP BY Playername HAVING COUNT (*)> 1 – cliffordheath