Estou tentando escrever uma consulta que retorna uma linha da tabela A sempre que uma coluna na tabela unida B contém vários valores distintos para uma única linha correspondente na tabela A. (A -> B é um relacionamento 1 -> muitos.) Eu construí um violino SQL para demonstrar isso no contexto: http://sqlfiddle.com/#!6/83952/1
Neste violino, a design
coluna da perf_ticket_type
tabela deve ser a mesma para todas as ticket_type
que possuem o mesmo perf_id
, mas estou tentando selecionar apenas as instâncias em que isso não ocorre. Portanto, para perf_id
3, há mais de um único design
sendo retornado com a consulta que estou usando atualmente.
O que eu quero como resultado são as duas colunas da performance
tabela apenas para perf_id
3, com base nos múltiplos valores de design
para isso perf_id
na tabela unida.
Fiquei frustrado por entender o GROUP BY no passado, então não tenho certeza se há algo diferente que eu poderia fazer aqui para obter o resultado desejado. No momento, acho que posso selecionar o que tenho no violino em uma tabela temporária e, em seguida, fazer outra seleção com a paraGROUP BY perf_id HAVING COUNT(*) > 1
obter o que quero (conforme as linhas selecionadas em que a coluna contém os mesmos dados em mais de um registro ), mas isso parece ser um passo extra.
Sua ideia está certa, mas você precisa
HAVING COUNT(DISTINCT design) > 1
Assim: