Foro oficial de SQL

Bueno señores, ya que esto esta un poco lento vengo a alborotarlo algo :p...


Quiero hacer una consulta en la cual sacar informacion de una o varias filas, pero no quiero hacer varios Store Procedure, en vez de hacer uno por ejemplo, BuscarPorID, BuscarPorNombre, etc, me gustaria saber como hacer uno que realmente funcione, he pensdo en hacerlo con:

WHERE Campo1 LIKE %'@Campo1'% or Campo2 LIKE %'Campo2'% or Campo3 = 'Campo3' .....

pero supongo que eso carga mas el Motor de Base de Datos y me gustaria saber si existe alguna alternativa que desconoscamos los novatos :nervios:


SuerteX :)
 
Hola a todos, quisiera saber si alguien tiene una BD con los países, estados y ciudades de mundo o si saben en donde encontrarla!!
muchas gracias ;)
 
Pues cuando yo tuve esa necesidad (hace como 8 años) lo que hice fue entrar a las web que tienen esta programación (mercadolibre, amazon, etc) y listo.
Sino pues google es tu amigo..!
 
hola, como hago para obtener ciertas columnas de una tabla ordenadas de acuerdo a un id que esta en otra tabla?

esta consulta:

SQL> select * from agenda inner join ciclos on agenda.ciclo=ciclos.ciclo order by ciclos.orden;

si funciona, pero cuando quiero obtener solo unas columnas , incluida la que hace posible el join, no se puede:

SQL> select ciclo,zona,periodo from agenda inner join ciclos on agenda.ciclo=ciclos.ciclo order by ciclos.orden;

sale:
ERROR en lÝnea 1:
ORA-00918: columna definida de forma ambigua

EDIT: sorry, ya me di cuenta de mi problema, solo era agregar select agenda.ciclo
 
hola, como hago para obtener ciertas columnas de una tabla ordenadas de acuerdo a un id que esta en otra tabla?

esta consulta:

SQL> select * from agenda inner join ciclos on agenda.ciclo=ciclos.ciclo order by ciclos.orden;

si funciona, pero cuando quiero obtener solo unas columnas , incluida la que hace posible el join, no se puede:

SQL> select ciclo,zona,periodo from agenda inner join ciclos on agenda.ciclo=ciclos.ciclo order by ciclos.orden;

sale:
ERROR en lÝnea 1:
ORA-00918: columna definida de forma ambigua

EDIT: sorry, ya me di cuenta de mi problema, solo era agregar select agenda.ciclo

jejejejejeje, ya se lo iba a decir :p



SuerteX :)
 
hola tengo esta consulta

PHP:
SELECT DISTINCT ( 
                         AGENDA.CICLO, AGENDA.PERIODO, AGENDA.GEN_LIBROS, AGENDA.IMP_LIBROS, AGENDA.TOMA_LECT, AGENDA.DIGIT_LECT, AGENDA.CRITICA, 
                         AGENDA.EN_INF_CRIT, AGENDA.CALC_CONS, AGENDA.LIQUIDACION, AGENDA.IMP_FACT, AGENDA.VENCIMIENTO, CICLOS.USUARIOS
                            )
FROM            AGENDA, CICLOS
WHERE        AGENDA.CICLO = CICLOS.CICLO 
AND (
                         (CICLOS.ESTADO = :ESTADO) OR
                         (CICLOS.TM = :TM) OR
                         (CICLOS.TIPO = :TIPO) OR
                         (CICLOS.CLASIFICACION = :CLASIF) OR
                         (CICLOS.FORMATO = :FORMATO) OR
                         (CICLOS.TOMA = :TOMA)
        )
ORDER BY CICLOS.ORDEN
dice que falta el parentesis derecho, sinceramente no lo veo
 
Quitale los del distinct
Mete en parentesis "AGENDA.CICLO = CICLOS.CICLO"
Si puedes colocale alias a las tablas (no es tan necesario pero si organizativo)
 
No entiendo lo de :ESTADO, :... :s

Pero deberia funciona asi:

PHP:
WHERE        (AGENDA.CICLO = CICLOS.CICLO) 
               AND 
                     (
                         (CICLOS.ESTADO = :ESTADO) OR
                         (CICLOS.TM = :TM) OR
                         (CICLOS.TIPO = :TIPO) OR
                         (CICLOS.CLASIFICACION = :CLASIF) OR
                         (CICLOS.FORMATO = :FORMATO) OR
                         (CICLOS.TOMA = :TOMA)
                    )


SuerteX :)
 
Amigo, lo de :estado y todo lo demás que lleva ( : ) son parámetros, es lo que hace uno programando en PHP, ASP, ExtJS, Delphi, C#, etc

Yo opino lo mismo que Virutero, asi deberia funcionar.
 
gracias, pero me los borra automaticamente el QueryBuilder en VS.net , no se por que...

ya se los coloque manualmente por codigo

y me sigue saliendo
ORA-01791: no es una expresión obtenida bajo SELECT
 
Trate cambiando el distinct por un group by de los campos que trae en el select.

O pruebe tambien cambiando el distinct por unique
Como en el otro post, coloquele alias a las tablas, es mejor que llamar el campo con el nombre directo de la tabla.
 
Error Message: ORA-01791: no es una expresión obtenida bajo SELECT


Ese error que reportas hay, es por la orden "ORDER BY", dice que usando la expresion distinct + la orden order by, sin que la expresion del order by este en los select, genera este error.

Una forma de que te pueda funcionar, seria que hagas el select distinct .... dentro de otro select, y hay si usar el order by.

select *
from (
SELECT DISTINCT AGENDA.CICLO, AGENDA.PERIODO, AGENDA.GEN_LIBROS, AGENDA.IMP_LIBROS, AGENDA.TOMA_LECT, AGENDA.DIGIT_LECT, AGENDA.CRITICA,
AGENDA.EN_INF_CRIT, AGENDA.CALC_CONS, AGENDA.LIQUIDACION, AGENDA.IMP_FACT, AGENDA.VENCIMIENTO, CICLOS.USUARIOS,
CICLOS.ORDEN
FROM AGENDA, CICLOS
WHERE AGENDA
.CICLO = CICLOS.CICLO
AND (
(
CICLOS.ESTADO = :ESTADO) OR
(
CICLOS.TM = :TM) OR
(
CICLOS.TIPO = :TIPO) OR
(
CICLOS.CLASIFICACION = :CLASIF) OR
(
CICLOS.FORMATO = :FORMATO) OR
(
CICLOS.TOMA = :TOMA)
)
)
ORDER BY ORDEN

PD: Perdon por el doble post, pero como son dos ideas distintas, entonces para no confundir una idea con otra
 
Amigo, lo de :estado y todo lo demás que lleva ( : ) son parámetros, es lo que hace uno programando en PHP, ASP, ExtJS, Delphi, C#, etc

Ahhh es que no sabia que los parametros en PL/SQL se pasaban con 2 puntos ( : ) ....:nervios:, es que solo he trabajado con SQL Server.

Con relacion al error de Distinct y Order By parece comun :S, ahi vi algo en postgree pero no lo puse para no llenar el thread..


SuerteX :)
 
Trate cambiando el distinct por un group by de los campos que trae en el select.

Error Message: ORA-00979: no es una expresion GROUP BY

O pruebe tambien cambiando el distinct por unique
Como en el otro post, coloquele alias a las tablas, es mejor que llamar el campo con el nombre directo de la tabla.

Error Message: ORA-01088: no todas las variables han sido enlazadas

Ese error que reportas hay, es por la orden "ORDER BY", dice que usando la expresion distinct + la orden order by, sin que la expresion del order by este en los select, genera este error.

Una forma de que te pueda funcionar, seria que hagas el select distinct .... dentro de otro select, y hay si usar el order by.

select *
from (
SELECT DISTINCT AGENDA.CICLO, AGENDA.PERIODO, AGENDA.GEN_LIBROS, AGENDA.IMP_LIBROS, AGENDA.TOMA_LECT, AGENDA.DIGIT_LECT, AGENDA.CRITICA,
AGENDA.EN_INF_CRIT, AGENDA.CALC_CONS, AGENDA.LIQUIDACION, AGENDA.IMP_FACT, AGENDA.VENCIMIENTO, CICLOS.USUARIOS,
CICLOS.ORDEN
FROM AGENDA, CICLOS
WHERE AGENDA
.CICLO = CICLOS.CICLO
AND (
(
CICLOS.ESTADO = :ESTADO) OR
(
CICLOS.TM = :TM) OR
(
CICLOS.TIPO = :TIPO) OR
(
CICLOS.CLASIFICACION = :CLASIF) OR
(
CICLOS.FORMATO = :FORMATO) OR
(
CICLOS.TOMA = :TOMA)
)
)
ORDER BY ORDEN

PD: Perdon por el doble post, pero como son dos ideas distintas, entonces para no confundir una idea con otra


Error Message: ORA-00904: "ORDEN": identificador no válido


gracias por su colaboración, pero segun veo va a tocar ha hacer consultas separadas...