PplWare Mobile

Vamos dar uns toques de SQL? XI

                                    
                                

Este artigo tem mais de um ano


Autor: Pedro Pinto


  1. Diogo Velho says:

    Olá,

    Os tutoriais estão espetaculares.

    Gostava de ver um tutorial sobre o comando GROUP BY ROLLUP.

    Continua com o bom trabalho.

    Abraço para o pplware

  2. Márcio says:

    Gostava se possível se alguém consegue dar-me um query para o seguinte:
    Actualizar um campo chamado ‘ordem’ que vai de 1 a 10 duma tabela conteúdos, sabendo que vamos apagar o conteúdo 6.
    Assim ficaria com 9 conteúdos no total e ordenado pelo campo ordem que ficava: 1,2,3,4,5,7,8,9,10.
    O objectivo aqui é organizar o campo ‘ordem’ para 1,2,3,4,5,6,7,8,9 pois acabamos de apagar um registo.

    • Duarte Brito says:

      A tua duvida é em MySQL ou em T-SQL?

      Para MySQL não sei se existe, mas muito provavelmente existe…

      Mas em T-SQL tens aqui uma solução…

      –DECLARAMOS A TABELA TEMPORARIA
      DECLARE @Tabela1 TABLE(Id BIGINT, Nome NVARCHAR(MAX))

      –POPULAMOS COM ALGUNS DADOS DE EXEMPLO
      INSERT INTO @Tabela1
      SELECT 1, ‘NOME1’
      UNION ALL
      SELECT 2, ‘NOME2’
      UNION ALL
      SELECT 3, ‘NOME3’
      UNION ALL
      SELECT 4, ‘NOME4’
      UNION ALL
      SELECT 5, ‘NOME5’
      UNION ALL
      SELECT 6, ‘NOME6’
      UNION ALL
      SELECT 7, ‘NOME7’
      UNION ALL
      SELECT 8, ‘NOME8’
      UNION ALL
      SELECT 9, ‘NOME9’
      UNION ALL
      SELECT 10, ‘NOME10’

      –VALIDAMOS A INSERÇÂO DOS DADOS
      SELECT * FROM @Tabela1

      –APAGAMOS A LINHA COM O ID 6
      DELETE @Tabela1
      WHERE Id = 6

      –FAZEMOS O SELECT COM UM ROW NUMBER DE FORMA A TRAZER A ORDEM DESEJADA
      SELECT ROW_NUMBER() OVER (ORDER BY Id) AS [NOVAORDEM]
      ,Id
      ,Nome
      FROM @Tabela1

      Será que isto te serve????

      • Márcio says:

        Bem, era em mysql, só falta saber esta linha :
        SELECT ROW_NUMBER() OVER (ORDER BY Id) AS [NOVAORDEM]
        ,Id
        ,Nome
        FROM @Tabela1

        pois de resto sei como se faz. Pode ser que alguem com conhecimentos em mysql saiba….

        • MV says:

          Se entendi bem, o que pretendes é o seguinte:

          Considerando como tabela de exemplo (ninja_tabela):

          id(chave)
          nome
          ordem
          tipo

          – Coloquei um campo “tipo” para diferenciares entre vários itens com várias ordens;
          – no campo “ordem” tens 1,2,3,4,5,6,7,8,9,10 e, como exemplo, um tipo “iogurtes”;

          para apagares o registo 6 (que já sabes):

          delete from ninja_tabela where ordem = 6 and tipo = ‘iogurtes’

          para repores a ordem dos registos que ficam acima do que apagaste – acertar o registo de ordem 7,8,9 e 10:

          update ninja_tabela ordem=ordem-1 where ordem>6 and tipo=’iogurtes’

          este comando retira um valor a cada “ordem” que contenha um valor acima de 6, e apenas registos de tipo ‘iogurtes’

          o 7,8,9 e 10 da “ordem” passa a 6,7,8 e 9.

          Através de stored procedures ou da linguagem de programação da tua preferência, podes automatizar este processo facilmente.

          É isto que pretendes? 🙂

          • Márcio says:

            MV
            Simples e funcional.
            Era mesmo isso, por vezes faço coisas bem mais difíceis e um update simples as voltas que dei sem chegar ao objectivo.

            Era mesmo isso, obrigadão.

  3. Nuno says:

    E para quando um tuturial de como criar um pequeno website para manuseamento dos dados na BD?

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.