none
como usar un ciclo do while en sql

    Question

  • ES posible que dentro de un query se coloque una do while si hacer procedimientos
    Sunday, September 18, 2011 10:12 PM

Answers

  • Mira dentro de SQL Server puedes usar sentencias como While, aunque no dentro de consultas SQL, pero realmente no es recomendable utilizar lógica de tipo procedimental dentro de tus soluciones en SQL Server debido a que este es un motor relacional especializado en el uso de teoría de conjuntos, solo como ejemplo un segmento de código que aplica el uso de un While, pero con un propósito muy especifico.

     

     

    WHILE 1 = 1
    BEGIN
    DELETE TOP (5000) FROM MiTabla
    WHERE fecha < '20110101';
    IF @@rowcount < 5000 BREAK;
    END

     


    Este permite la eliminación de una gran cantidad de registros, pero a fin de evitar problemas de rendimiento hago las eliminaciones de 5000 en 5000 filas, saliendo del While cuando la cantidad de registros eliminados en la instrucción sea inferior a 5000 filas.  Ubique este ejemplo a nivel ilustrativo, porque bueno no todo es blanco o negro, pero si te aconsejo cambiar la "lógica procedimental" por soluciones optimas (teoria de conjuntos) no solo en SQL sino en SGBD relacionales, cualquier duda con gusto te apoyamos.

     

     

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

     


    Monday, September 19, 2011 12:47 AM

All replies

  • ES posible que dentro de un query se coloque una do while si hacer procedimientos

    AUXILIOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    Monday, September 19, 2011 12:15 AM
  • Mira dentro de SQL Server puedes usar sentencias como While, aunque no dentro de consultas SQL, pero realmente no es recomendable utilizar lógica de tipo procedimental dentro de tus soluciones en SQL Server debido a que este es un motor relacional especializado en el uso de teoría de conjuntos, solo como ejemplo un segmento de código que aplica el uso de un While, pero con un propósito muy especifico.

     

     

    WHILE 1 = 1
    BEGIN
    DELETE TOP (5000) FROM MiTabla
    WHERE fecha < '20110101';
    IF @@rowcount < 5000 BREAK;
    END

     


    Este permite la eliminación de una gran cantidad de registros, pero a fin de evitar problemas de rendimiento hago las eliminaciones de 5000 en 5000 filas, saliendo del While cuando la cantidad de registros eliminados en la instrucción sea inferior a 5000 filas.  Ubique este ejemplo a nivel ilustrativo, porque bueno no todo es blanco o negro, pero si te aconsejo cambiar la "lógica procedimental" por soluciones optimas (teoria de conjuntos) no solo en SQL sino en SGBD relacionales, cualquier duda con gusto te apoyamos.

     

     

     


    "El talento es una disciplina tenaz y una larga paciencia"  Gustave Flaubert

     Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

     

     


    Monday, September 19, 2011 12:47 AM
  • Oye es que me encargaron una tarea para mañana y no se como hacer la consulta es que ya me meti bastante en internet en como hacer un ciclo para hacer mi consulta y nada mas no la pude hacer , yo digo que me cicle ya jjee, mira planteo el siguiente caso es que
    Vamos a supones que que tengo una tabla de autores(id_aut,nombre) y una tabla de articulos(id_art,nombre) y una tabla de descripcion de autores(id_aut,id_art) y referencias(id_art, refe) lo que pasa es que cuando me planetaron el problema entendi mal como debia de resolverse y aorita ya ando muy revuelto y no se como estructurar mi query Y lo tenia asi: (A MERO ABAJO PONGO LO QUE TENGO QUE HACER)
    select
    'H'|| to_char(case when (count(distinct d.id_art) <= min(r.ref)) then
    count(distinct d.id_art)
    else case when (count(distinct d.id_art) >= min(r.ref)) then
    min(r.ref)
    else
    0
    end
    end )as resultado
    from autor a
    inner join descautor d on a.id_aut=d.id_aut
    inner join referencias r on d.id_art=r.ref
    where a.nom='Catalina Ponor'
    Monday, September 19, 2011 4:28 AM
  • lo que pasa es que en base en las tabala anteriomente mencionadas tengo que estructura un query que me mueste el H que tiene cada autor y la H segun se saca de la siguiente manera :
    H1= 1 articulo con almenos una cita(campo ref)
    H2 =2 articulos con al menos 2 citas
    y asi sucesivamente bueno lo que pasa
    es que por ejemplo
    Una autor ha escrito 5 articulos
    1 articulos tiene 1 referncia
    2 articulos tiene 2 referncia
    3 articulos tiene 3 referncia
    4 articulos tiene 4 referncia
    5 articulos tiene 5 referncia
    el H de este autor es 3 puesto que el articulo(3,4,5) tuvieron al menos tres citas cada uno , y mi quuery como lo planteee me decia que tenia H1 puesto que yo lo hise que todos tuvieran almenos 5 citas o que todos tuvieran al menos 4 o que almenos todos tuvieran 3 citas, o que todos almenos tuvieran 2 ccitas o que o todos tuvieran 1 y como todo cumplian que todos tenian uno pues por eso me daba H1 porque yo pensaba que todos tenia que cumplir el mismo numero de citas por lo menos , no se si me explique como lo intereprete yo, y pues ya nose quu hhacer como sacar H no se si me puedan una idea porque la verda si me interesa resolverlo y mas porque es para mañan en la mañana espero y me pueda aportaar con una idea Gracias
    Monday, September 19, 2011 4:29 AM
  • lo que pasa es que en base en las tabala anteriomente mencionadas tengo que estructura un query que me mueste el H que tiene cada autor y la H segun se saca de la siguiente manera :
    H1= 1 articulo con almenos una cita(campo ref)
    H2 =2 articulos con al menos 2 citas
    y asi sucesivamente bueno lo que pasa
    es que por ejemplo
    Una autor ha escrito 5 articulos
    1 articulos tiene 1 referncia
    2 articulos tiene 2 referncia
    3 articulos tiene 3 referncia
    4 articulos tiene 4 referncia
    5 articulos tiene 5 referncia
    el H de este autor es 3 puesto que el articulo(3,4,5) tuvieron al menos tres citas cada uno , y mi quuery como lo planteee me decia que tenia H1 puesto que yo lo hise que todos tuvieran almenos 5 citas o que todos tuvieran al menos 4 o que almenos todos tuvieran 3 citas, o que todos almenos tuvieran 2 ccitas o que o todos tuvieran 1 y como todo cumplian que todos tenian uno pues por eso me daba H1 porque yo pensaba que todos tenia que cumplir el mismo numero de citas por lo menos , no se si me explique como lo intereprete yo, y pues ya nose quu hhacer como sacar H no se si me puedan una idea porque la verda si me interesa resolverlo y mas porque es para mañan en la mañana espero y me pueda aportaar con una idea Gracias

    Alguien que me pueda dar una idea
    Monday, September 19, 2011 5:26 AM
  • Hola.

    Por favor, pásanos scripts de estructura de tablas, scripts con inserción de datos de ejemplos y resultado esperado.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Monday, September 19, 2011 8:32 AM

  • create table autor(
    id_aut integer  primary key,
    nom varchar(100))
    
    create table articulos(
    id_art integer primary key,
    nombre varchar(100))
    
    create table descAutor(
    id_aut integer not null,
    id_art integer not null)
    
    
    lo que pasa es que en base en las tabala anteriomente mencionadas tengo que estructura un query que me mueste el H que tiene cada autor y la H segun se saca de la siguiente manera :<div>H1= 1 articulo con almenos una cita(campo ref)</div><div>H2 =2 articulos con al menos 2 citas</div><div>y asi sucesivamente bueno lo que pasa</div><div>es que por ejemplo</div><div>Una autor ha escrito 5 articulos</div><div>1 articulos tiene 1 referncia</div><div><div>2 articulos tiene 2 referncia</div><div><div>3 articulos tiene 3 referncia</div></div></div><div><div>4 articulos tiene 4 referncia</div><div><div>5 articulos tiene 5 referncia</div><div>el H de este autor es 3 puesto que el articulo(3,4,5) tuvieron al menos tres o mas citas cada uno , es dercir me debe de arojar que el auto es H 3
    
    alter table descAutor
     add foreign key
     (id_aut) references autor(id_aut)
     
    alter table desAutor
    	add foreign key
    	(id_art)references articulos(id_art)
    	
    create table referencias(
    id_art integer not null,
    ref integer not null,
    )
    
    alter table referencias
    	add foreign key
    	(id_art) references articulos(id_art)	
    	
    
    alter table referencias
    	add foreign key
    	(ref) references articulos (id_art)
    	
    	
    </div></div></div>
    

    Tuesday, September 20, 2011 2:20 PM

  • create table autor(
    id_aut integer  primary key,
    nom varchar(100))
    
    create table articulos(
    id_art integer primary key,
    nombre varchar(100))
    
    create table descAutor(
    id_aut integer not null,
    id_art integer not null)
    
    
    lo que pasa es que en base en las tabala anteriomente mencionadas tengo que estructura un query que me mueste el H que tiene cada autor y la H segun se saca de la siguiente manera :<div>H1= 1 articulo con almenos una cita(campo ref)</div><div>H2 =2 articulos con al menos 2 citas</div><div>y asi sucesivamente bueno lo que pasa</div><div>es que por ejemplo</div><div>Una autor ha escrito 5 articulos</div><div>1 articulos tiene 1 referncia</div><div><div>2 articulos tiene 2 referncia</div><div><div>3 articulos tiene 3 referncia</div></div></div><div><div>4 articulos tiene 4 referncia</div><div><div>5 articulos tiene 5 referncia</div><div>el H de este autor es 3 puesto que el articulo(3,4,5) tuvieron al menos tres o mas citas cada uno , es dercir me debe de arojar que el auto es H 3
    
    alter table descAutor
     add foreign key
     (id_aut) references autor(id_aut)
     
    alter table desAutor
    	add foreign key
    	(id_art)references articulos(id_art)
    	
    create table referencias(
    id_art integer not null,
    ref integer not null,
    )
    
    alter table referencias
    	add foreign key
    	(id_art) references articulos(id_art)	
    	
    
    alter table referencias
    	add foreign key
    	(ref) references articulos (id_art)
    	
    	
    </div></div></div>
    

    AYUDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDAAAAAAAAAAAAAAAA

    Hola AYUDA PORFAVOR
    Disculpe que los moleste , Pero queria ver si me pueden o mas bien nos pueden dar una idea de como realizar un query para localizar el tamaño DE un subgrafo un Grafo completo Espero y nos puedan dar una idea.
    Wednesday, September 21, 2011 5:17 AM
  • Hola.

    A lo mejor es por el formato, pero sólo veo ahí scripts para crear las tablas, ni los datos ni el resultado esperado. ¿Puedes pasárnoslos?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Sunday, September 25, 2011 7:09 PM
  • Hola.

    Estudiante-, nos gustaría poder ayudarte, pero nos gustaría más que siguieras los hilos que abres, que dieras un formato adecuado a las cuestiones que planteas, que pusieras un título identificativo de las mismas... De otro modo, acabaremos por desistir.

    ¿Puedes pasarnos la información que te pedíamos?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    Friday, September 30, 2011 4:59 PM