sql incrementa um número
<p>problema:</p><p>desejo incrementar um número com base em uma tabela. por exemplo, se uma tabela contém linha</p><pre><code>1 1 2 3 4 4 4 5 </code></pre><p>a coluna mytable deve ser incrementada com base em max (linha) + 1 na coluna acima. portanto, o resultado deve ser assim:</p><pre><code>6 6 7 8 9 9 9 10 </code></pre><p>este é o código até agora:</p><pre><code>open cur declare @working\_on\_id int fetch next from cur into @working\_on\_id while @@fetch\_status = 0 begin set @max\_id = @max\_id + 1 update #workingtable set id = @max\_id where id = @working\_on\_id fetch next from cur into @working\_on\_id end close cur deallocate cur </code></pre><p>você poderia me ajudar a encontrar uma solução para este problema. obrigado!</p>
<p>acho que você poderia fazer isso facilmente com isto:</p><pre><code>update your\_table set id = id + (select max(id) from your\_table) </code></pre>
boa tarde edivania.para criar uma tabela no mysql que gere um campo id com auto incremento basta incluir o comando auto\_increment.[code]create table xpto ( id integer not null auto\_increment... <p>sem mágica, apenas sql:</p><pre><code>create table yourtablename (\_id integer primary key autoincrement, column1 text not null unique, column2 text); </code></pre><p>\_id não será duplicado de forma alguma porque é a chave primária, coluna1 nem porque é único.</p> <p>um índice de cobertura <em> </em> é um índice que contém todas e possivelmente mais colunas que você precisa para sua consulta.</p><p>por exemplo, isto:</p><pre><code>select * from tablename where criteria </code></pre><p>normalmente usa índices para acelerar a resolução de quais linhas recuperar usando os critérios <em> </em>, mas, em seguida, irá para a tabela completa para recuperar as linhas.</p><p>no entanto, se o índice contiver as colunas <em> coluna1, coluna2 </em> e <em> coluna3 </em>, então este sql:</p><pre><code>select column1, column2 from tablename where criteria </code></pre><p>e, desde que esse índice específico possa ser usado para acelerar a resolução de quais linhas recuperar, o índice já contém os valores das colunas nas quais você está interessado, portanto, não precisará ir para a tabela para recuperar as linhas , mas pode produzir os resultados diretamente do índice.</p><p>isso também pode ser usado se você perceber que uma consulta típica usa 1-2 colunas para resolver quais linhas e, normalmente, adiciona outras 1-2 colunas. pode ser benéfico anexar essas colunas extras (se elas são iguais em todo ) para o índice, para que o processador de consultas possa obter tudo do próprio índice.</p><p>aqui está um <a href="http://www.devx.com/dbzone/article/29530">artigo: cobertura de índice aumenta o desempenho de consultas do sql server</a> sobre o assunto.</p> <p>boa tarde, rogério! como vai?</p>
<p>implementando o código abaixo</p>
<pre class="prettyprint"><code>public class testeincremento {
 public static void main(string args[]) {
 int j &#61; 0;
 for (int i&#61;0; i&lt;5; i&#43;&#43;) {
 system.out.println(&#43;&#43;j);
 }
 system.out.println();

 j &#61; 0;
 for (int i&#61;0; i&lt;5; i&#43;&#43;) {
 system.out.println(j&#43;&#43;);
 }
 }
}</code></pre><p>vc irá verificar que a saída é</p>
<pre class="prettyprint"><code>1
2
3
4
5

0
1
2
3
4</code></pre><p>demonstrando que a diferença do pré incremento (<code>&#43;&#43;j</code>) e do pós incremento (<code>j&#43;&#43;</code>) é o momento em que o incremento é feito! o pré incremento atualiza o valor da variável no mesmo instânte e o pós incremento só passa a valer na linha seguinte!</p>
<p>quanto à utilização, vai depender da lógica do seu código. se vc quiser que a atualização do valor seja feita na mesma linha onde o tal valor é utilizado, então vc vai precisar do pré incremento. caso contrário poderá utilizar o pós incremento mesmo!</p>
<p>pegou a ideia? qualquer coisa é só falar!</p>
<p>grande abraço e bons estudos, meu aluno!</p> bom dia! porque você não cria uma trigger que executa a procedure toda vez que uma nova tabela for criada?isso resolveria seu problema...espero ter ajudado!... <p>na verdade a incrementação da variável ocorre somente ao final do bloco, então seria mais ou menos o que você disse. no primeiro caso seria</p>
<p><em>não soma pois quebra antes</em> </p>
<p>e no último seria</p>
<p><em>logo o i nao incrementa para 1</em></p>
<p>pode ser uma analogia sim, mas é um pouco inadequada e pode levar a equívocos no futuro. é mais parecido com uma interrupção forçada, como uma função sem tipo de retorno que é interrompida dada uma condição:</p>
<pre class="prettyprint"><code>public void funcao() {
 // faz algumas coisas
 if (condicao) {
 return;
 }
 // faz outras coisas
}</code></pre> o cálculo do inss envolve identificar a base de cálculo do trabalhador e consultar a tabela do inss atualizada.

deve-se ter em mãos o salário base e as demais remunerações constando na folha de pagamento. em seguida, deve-se consultar a tabela atualizada contendo as alíquotas a serem aplicadas de acordo com a base de cálculo do trabalhador. essa tabela é amplamente divulgada pela internet, sendo alterada todos os anos de acordo com as políticas estabelecidas pelo governo federal.

ex.:

base de cálculo = r$1.900,00

alíquota de desconto = 9%

cálculo do inss = r$1.900,00 x 9%

valor do inss a ser descontado = r$171,00 para multiplicar matrizes em c++, é utilizando o algoritmo abaixo:includeint main (){int mt1 [3][2], mt2 [2][3];int linha, coluna;int mtres[3][3];//primeira matriz 3x2printf ("digite a matriz 1:\n");for(linha=0; linha<3; linha++){ for(coluna=0; coluna<2; coluna++) scanf("%10d", &mt1[linha][coluna]);}for (linha=0; linha<3; linha++){ for(coluna=0; coluna<2; coluna++) printf ("%5d", mt1[linha] [coluna]); printf("\n\n");}//segunda matriz 2x3printf ("digite a matriz 2:\n");for(linha=0; linha<2; linha++){ for(coluna=0; coluna<3; coluna++)scanf("%10d", &mt2[linha][coluna]);}for (linha=0; linha<2; linha++){for(coluna=0; coluna<3; coluna++)printf ("%5d", mt2[linha] [coluna]);printf("\n\n");}//multiplicaçao da primeira com a segunda matriz= matriz quadrada [3][3] printf("resultado da matriz resultante");/*agora a multiplicação das duas*/ for (linha=0;linha<3;linha++) { for(coluna=0;coluna<3;coluna++) mtres[linha][coluna]=(mt1[linha][coluna]*mt2[linha][coluna]);/*armazenando em uma terceira*/ }for(linha=0;linha<3;linha++){ for(coluna=0;coluna<3;coluna++) printf("%5d",mtres[linha][coluna]); printf ("\n\n");}system ("pause");return 0;}sendo assim, com esse algoritmo podemos multiplicar as matrizes que quisermos. fonte: http://www.guj.com.br/t/multiplicacao-de-matrizes-em-c/281819 <p>oi ricardo,</p>
<p>bem observado, realmente existe um erro na execução do nosso código de aula, que não invalida o nosso exemplo, mas precisa ser considerado.</p>
<p>isso aconteceu porque estamos inicialmente trabalhando com números inteiros e como estamos realizando multiplicações em cima de multiplicações, este números crescem e extrapolam o limite dos números inteiros (-2147483648 até 2147483647). a solução para este problema seria utilizarmos o tipo <em>float</em> da seguinte forma:</p>
<pre class="prettyprint"><code>import numpy as np

np\_array &#61; np.arange(1000000)
py\_list &#61; list(range(1000000))
%time for \_ in range(100): np\_array &#61; np\_array * 2.0
%time for \_ in range(100): py\_list &#61; [x * 2.0 for x in py\_list]</code></pre><p>observe que no código acima estamos fazendo a multiplicação por <strong>2.0</strong> e não mais por <strong>2</strong>. isso converte automaticamente os valores de nossa lista e <em>array numpy</em> para o formato <em>float</em>.</p>
<p>obrigado pela ajuda!</p> <p>não mexa com o banco de dados mysql. há muito mais acontecendo lá do que apenas a tabela de usuários. sua melhor aposta é o comando " <a href="https://dev.mysql.com/doc/refman/5.5/en/show-grants.html">show grants</a> for". eu tenho muitos aliases e funções de manutenção da cli no meu .bashrc (na verdade, meus .bash\_aliases que eu forneço no meu .bashrc). esta função:</p><pre><code>mygrants() { mysql -b -n $@ -e "select distinct concat( 'show grants for \'', user, '\'@\'', host, '\';' ) as query from mysql.user" | \ mysql $@ | \ sed 's/\(grant .*\)/\1;/;s/^\(grants for .*\)/## \1 ##/;/##/{x;p;x;}' } </code></pre><p>o primeiro comando do mysql usa sql para gerar sql válido, que é canalizado para o segundo comando do mysql. a saída é então canalizada através do sed para adicionar comentários bonitos.</p><p>o $ @ no comando permitirá que você o chame como: mygrants --host = prod-db1 --user = admin --password = secret</p><p>você pode usar seu kit de ferramentas unix completo da seguinte maneira:</p><pre><code>mygrants --host=prod-db1 --user=admin --password=secret | grep rails\_admin | mysql --host=staging-db1 --user=admin --password=secret </code></pre><p>essa é a maneira certa de mover usuários. sua mysql acl é modificada com sql puro.</p>