AS/400 - SELECT TOP ¡¡¡¡ AYUDA !!!

 
Vista:

SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Aitor (1 intervención) el 03/10/2005 17:59:52
Hola a todos me gustaría saber como puedo hacer un SELECT TOP a un AS/400.
Me explico, tengo un programa hecho en visual basic con una conexión a un AS/400 que la hace perfectamente. El problema está en que tengo que realizar una búsqueda en la tabla ARTICULOS que tiene 300.000 registros, y la consulta la tengo que busque todo lo que empieza por un parámetro (lo que el usuario me ponga en una caja de texto). Si me encuentra menos de 1000 registros, la busqueda es instantánea, pero si me encuentra 10.000 registros me tarda como 10 segundos.

En SQL-Server existe la clausula TOP [NUMERO] para que busque los N primeros números y desde aquí se pare.
Es decir en lugar de:
SELECT * FROM ARTICULOS WHERE CODIGO LIKE '31%'
sería:
SELECT TOP 1000 * FROM ARTICULOS WHERE CODIGO LIKE '31%'
para que sólo me muestre los 1000 primeros registros que encuentre.

Alguien sabe como se puede hacer esto en AS/400, ya que en el SQL del AS/400 la clausula TOP da un error (no existe).

Muchas gracias, mi correo es [email protected]

Aitor.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por luis godoy (1 intervención) el 12/10/2005 19:55:17
no se si te sirva , pero te recomiendo usar el openquery del sql-server

entoces para lo que tu necesitas usas la odbc hacia el AS400

Select top 100 from openquery(AS400,'Select * from datos' )

fijate el el query del as400 este en comillas simples

donde AS400 es la ODBC


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Aitor (2 intervenciones) el 18/10/2005 18:19:03
Hola lo primero gracias por tu ayuda Luis, pero no me funciona, he estado hablando con programadores de AS/400 y me dicen que la clausura TOP no existe en el SQL del AS/400.
El error que me da es el siguiente:

[IBM] [Controlador ODBC de iSeries Access] [DB2 UDB] SQL 0104 - Signo 100 no valido. Signos válidos: + - AS <IDENTIFIER>

Mi SQL que le paso es:

SQLACCESS = "SELECT TOP 100 FROM OPENQUERY(ALMQA,'select QAGRP,QACDG,QANBR,QAREF from IQSX000_ALMQALC " & _
"where QAREF like '" & Trim(TxtCaja) & "%'" & " order by QAGRP ASC')"

He probado a poner el 100 entre parentesis y nada.

Seguiré buscando más ayudas a ver si encuentro algo.
Si se te ocurriera otra cosa por favor comunicamelo.
Gracias, atentamente:
Aitor Martin
[email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por César Balaguer (4 intervenciones) el 26/10/2005 19:03:55
Nunca he utilizado el SQL del AS400, pero para el DB2 para AS400 se utiliza de la siguiente manera,

SELECT [Campos]
FROM [Tablas]
WHERE [Condicion]
FETCH FIRST [Numero] ROWS ONLY

donde [Numero] es la cantidad de registros que queres mostrar (Los N primeros)
Saludos y ojalá te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Aitor (2 intervenciones) el 27/10/2005 12:27:32
Gracias voy a intentar si funciona y te digo algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Luis Antonio Nieto Cortés (1 intervención) el 04/10/2006 18:42:26
MIL GRACIAS.... ERES LA NETA.... SI FUNCIONO LA OPCION QUE NOS MANDASTE.
SALUDOS.
CUALQUIER COSA NO DUDES EN HABLARNOS PARA VER SI TE PODEMOS AYUDAR EN ALGO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por victor solis (1 intervención) el 17/12/2008 18:52:41
excelente!
saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por CARLOS INFANTE (1 intervención) el 11/10/2014 00:30:19
SI, LA VERDAD ERES UN MASTER, FUNCIONA PERFECTO. GRACIAS POR TU APROTACION
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Ivon (1 intervención) el 05/01/2007 21:47:43
SI TENGO UNA BD PLANA DE LA CUAL SOLO QUIERO EXTRAER
UN TIPO DE PRODUCTO ESPECIFICO, COMO DEBO HACER MI CONSULTA?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Ramiro matos (2 intervenciones) el 10/03/2007 17:57:23
Select prodmo, prodyr
FROM AS400Table
WHERE prprty = '11' AND wlprdc = 'Product'
ORDER BY prodyr DESC, prodmo DESC
Fetch First 1 Row Only
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Alfre (1 intervención) el 22/12/2007 00:03:42
Gracias amigos sus comentarios me ayudaron!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Bernardo (5 intervenciones) el 02/07/2013 23:21:34
In DB2 it's FETCH FIRST <n> ROWS ONLY
E.g:
SELECT * FROM T ORDER BY c1 FETCH FIRST 10 ROWS ONLY;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SELECT TOP ¡¡¡¡ AYUDA !!!

Publicado por Sergio Reveron (3 intervenciones) el 06/06/2018 14:55:16
WHERE acmast in (' ' , 'A')
GROUP BY acmcun
HAVING count(acmacc) >= 4
ORDER BY acmcun
Cuentas

Con esta instrucción puedes hacer lo que desea en el comando having debes de cambiar el nombre( acmacc) por el nombre del articulo que estas buscando, este ejemplo selecciona solo 4 registros del archivo
Espero que le funciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar