Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Repetir valor (https://www.clubdelphi.com/foros/showthread.php?t=45249)

altp 27-06-2007 11:16:01

Repetir valor
 
Buenos dias foro.

Tengo la siguiente consulta:
Código SQL [-]
Select CODIGO_BARRA from ART_TAL_COL
where CODIGO_ARTICULO = '0001' and TALLA = 40

Mi problema es que solo me devuelve un valor (en realidad es lo que tiene que devolver), pero me gustaría saber, si mediante algún parámetro le puedo decir que el resultado me lo devuelva 2, 3, 4, etc veces.

Me devuelve un valor, por ejemplo, realizo la consulta y devuelve:
80002002334340

Pero yo quiero que me devuelva:
80002002334340
80002002334340

Se puede hacer esto de alguna manera?

Gracias.

ArdiIIa 27-06-2007 11:25:25

Hola:

No se si utilizas Firebird o similar.... Por un Select creo que no puedes hacer eso ??
Sin embargo con un procedure en la base de datos en el que recibiera el código, la talla y el número de repeticiones que quieres, eso si sería viable....

altp 27-06-2007 11:50:22

Gracias por responder.

Utilizo Firebird.

Lo del procedimiento más o menos lo sabía, lo que pasa es que lo necesito en una select.

No sé si con un 'count', 'having', 'rows', etc se podría hacer algo
Lo estoy probando pero nada de nada.

ArdiIIa 27-06-2007 11:52:55

Te pongo un ejemplo:

Código SQL [-]
CREATE PROCEDURE REPETITIVO(CODIGO VARCHAR(4) , TALLA INTEGER,REPETICION SMALLINT)
RETURNS( VALOR VARCHAR(14) )
AS
DECLARE VARIABLE TEMPORAL SMALLINT;
BEGIN
Temporal = 0;
For Select Codigo_Barra From ART_TAL_COL
Where CODIGO_ARTICULO = :Codigo and TALLA = :Talla
Into :Valor
Do
While (Temporal < :Repeticion) Do
Begin
Temporal = Temporal + 1;
  SUSPEND;
End
END


Ejemplo de llamada:
Código SQL [-]
Select * From PROCEDURE REPETITIVO('0001',40,7);

mensana 27-06-2007 12:01:26

Cita:

Empezado por altp
...que el resultado me lo devuelva 2, 3, 4, etc veces.

Select ...
from ...
where ...

UNION ALL

select ...
from ...
where ...

Es decir, repetir la misma select varias veces

altp 27-06-2007 12:25:09

Gracias ArdiIIa por responder. (También a tí mensana)

Lo acabo de probar con el procedimiento almacenado y funciona estupendamente, pero preferiría con un select a secas.

Lo de las uniones de mensana no me ha funcionado.

Si teneis alguna solución mejor os lo agradeceré.

De momento me quedo con el procedimiento.

gluglu 27-06-2007 13:07:13

Pues a mi en Interbase al menos me funciona perfectamente :

Código SQL [-]
Select CODIGO_BARRA from ART_TAL_COL
where CODIGO_ARTICULO = '0001' and TALLA = 40
Union All
Select CODIGO_BARRA from ART_TAL_COL
where CODIGO_ARTICULO = '0001' and TALLA = 40
Union All
Select CODIGO_BARRA from ART_TAL_COL
where CODIGO_ARTICULO = '0001' and TALLA = 40

y me da el resultado 3 veces repetido.

Bastaría que en tu código hiceras un For While Loop y añadieras el texto que ya tuvieras tantas veces como quieras obtener el resultado.

altp 27-06-2007 13:23:05

Lo probé, pero solo con UNION, me faltaba poner el ALL.

De momento la opción que más me ha gustado es la del procedimiento almacenado.

Gracias de todas formas.


La franja horaria es GMT +2. Ahora son las 14:14:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi