SubSelect com condição da Select
03/12/2015
0
Tenho uma subselect que conta o numero de registros dentro de uma select só que essa subselect tem que ter uma condição que relaciona um campo da select.
A select:
SELECT nome,telefone FROM cadastro;
subselect
Select Count(*) FROM cadastro where nome(da subselect)=nome(da select);
Arthur Scarpelli
Post mais votado
Mais Posts
03/12/2015
Marcos P
O exemplo abaixo é baseado na própria [url:descricao=documentação]http://dev.mysql.com/doc/refman/5.7/en/subqueries.html[/url] do MySql :
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2 WHERE nome = t1.nome);
Tente adaptar teu código a partir disso...
03/12/2015
Arthur Scarpelli
03/12/2015
Marcos P
Como exemplo, uma vez que o código abaixo não tem muita lógica, fica assim :
SELECT * FROM t1 aliasPRINCIPAL WHERE column1 = (SELECT column1 FROM t1 WHERE nome = aliasPRINCIPAL.nome);
Só preste atenção para não tornar isso aí recursivo e acabar gerando deadlock no banco !
03/12/2015
Alan Mario
[url]http://www.inf.ufsc.br/~ronaldo/ine5323/SQL-subconsultas.pdf[/url]
03/12/2015
Arthur Scarpelli
where
DATEDIFF(CONCAT(
SUBSTR(data, 1, 4),
'-',
SUBSTR(data, 5, 2),
'-',
SUBSTR(data, 7, 2)
),curdate())<-20 and quantidade > (select Count(*) FROM tabela1 secudaria where secudaria.arquivo=principal.arquivo);
Gente executei essa select e o banco fica buscando e nunca me retorna.
03/12/2015
Marcos P
Quantos registros na tabela ?
Processamento local ou a base de dados está em outra máquina ?
Qual a chave primária nessa tabela ?
Existe índice por tabela.arquivo ?
Retire a condição por data, apenas para fins de debug ( depois que resolver a subquery, volte a colocá-la ) !
Substitua "Count(*)" por "Count(1)" ( que não envolve índices no banco, pois a contagem é feita por uma constante )
03/12/2015
Arthur Scarpelli
03/12/2015
Marcos P
...o MySQL esta varrendo todas as partições.
Vá no Fiddle, crie a estrutura da tabela e popule-a com alguns registros para teste.
Depois volte aqui e informe o link...
03/12/2015
Arthur Scarpelli
03/12/2015
Marcos P
Vá no Fiddle, crie a estrutura da tabela e popule-a com alguns registros para teste.
Depois volte aqui e informe o link...
Outra alternativa é você descrever, em português mesmo, qual o objetivo dessa query, pois deste o início isso não ficou muito claro !
Minha interpretação do formato atual da query é : retorne os dados da tabela, onde a coluna quantidade for maior que o numero de ocorrências de cada registro na própria tabela !
É isso ?
Se você respondesse as perguntas que lhe fiz, ficaria mais fácil te ajudar...
Quantos registros na tabela ?
Processamento local ou a base de dados está em outra máquina ?
Qual a chave primária nessa tabela ?
Existe índice por tabela.arquivo ?
Não é muito simples ficar "adivinhando" sua necessidade !
Clique aqui para fazer login e interagir na Comunidade :)