Select * From Up To 1 Rows
Hola Foro,
qué diferencia hay entre un select single y un SELECT * FROM UP TO 1 ROWS? esta sentencia, ser un select end select me parece obsoleta, cómo la puedo actualizar? SELECT * FROM VAKPA UP TO 1 ROWS WHERE KUNDE = T_CU-KUNNR AND PARVW = 'AG' AND AUART = 'PVA' AND VKORG = T_CU-VKORG AND VTWEG = T_CU-VTWEG AND SPART = T_CU-SPART ORDER BY VBELN DESCENDING. ENDSELECT. MUCHAS GRACIAS |
SELECT * FROM VAKPA UP TO 1 ROWS
into table it_vakpa WHERE KUNDE = T_CU-KUNNR AND PARVW = 'AG' AND AUART = 'PVA' AND VKORG = T_CU-VKORG AND VTWEG = T_CU-VTWEG AND SPART = T_CU-SPART ORDER BY VBELN DESCENDING. read table it_vakpa into wa_vakpa index 1. Esa sentencia intenta guardar la registro del vbeln mas alto (por eso lo ordena) usa el endselect porque si bien vos vos solo buscas 1 registro, la sentencia te obliga a guardarlo en una tabla interna... De esta manera que te digo yo, tendrias en wa_vakpa el dato que estas buscando |
El "SELECT SINGLE" sirve para hacer una consulta cuando tienes los campos claves, de tal forma que te devolverá solo un registro. Esté registro podrás guardarlo en una estructura, o si por el contrario deseas solo un campo, podrás coger el campo deseado y guardarlo en una variable.
El "UP TO 1 ROWS" se utiliza cuando haces una consulta pero no accedes con toda la clave, con lo que dicha consulta te devolverá varios registros o lineas. Si de todas estas lineas recogidas solo te interesa la 1º, utilizarás esta sentencia. Por ejemplo si quieres recoger las 5 primeras lineas, pondrás UP TO 5 ROWS,... Espero haberte aclarado un poco más. ;) |
El SELECT SINGLE no se puede ordenar, el SELECT ENDSELECT si.
|
Claro y contundente :) +1 |
Según el Best practice hay que evitar en la medida de lo posible utilizar el Select ... EndSelect, ya que es peor.
|
Hay que evitarlo porque tienes la base de datos abierta mientras dure el bucle, pero aqui solo te traes un registro y cierras. Otra cosa es que no sea aconsejable hacer el order by, porque haces trabajar a la base de datos, y eso si que lo puedes cambiar por un sort a tu tabla interna, pero entonces te tienes que traer todos los registros que cumplan tu condicion, lo que conlleva gasto de ancho de banda. Cada cosa tiene sus pros y sus contras. Y para gustos los colores. Espero que te haya servido de algo mi aclaración. Yo he visto las dos tecnicas en la misma empresa. :) |
Totalmente de acuerdo con todo ;) Espero no irme por las ramas... pero para lo que comentas de que no es aconsejable hacer un ORDER BY y es mejor un SORT de la tabla interna... creo que es aun mejor que la tabla interna sea SORTED, te ahorras el ordenarla y al hacer la consulta se ordena automáticamente. |
Esta claro, una tabla sorted es mas eficiente a la hora de hacer busquedas. :) |
Husos Horarios son GMT. La hora en este momento es 12:58:03. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web