Foros Club Delphi

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

emeritos 19-03-2015 16:27:07

Consulta SQL
 
Hola dilferos.
Mi pregunta es sobre una consulta de SQL para despues migrarla a Delphi 7. Os pongo en situacion. Tengo estos fichero:

GENEROS(cod_genero,genero), CATEGORIAS(cod_categoria,categoria), PESOS(cod_peso,peso), COMPETIDORES(cod_competidor,competidor), estos estan rellenos con infomacion, el conflictivo es CUADROS(cod_genero,cod_categoria,cod_peso,cod_cuadro,cod_competidorL,cod_competidorV) aqui todos los campos estan rellenos excepto cod_competidorL,cod_competidorV que lo pueden estar (no causa problema) o no lo pueden estar (uno o los dos) por cual su valor si no lo esta es 0(cero).

La consulta que tengo realizada es:
Código SQL [-]
   SELECT G.genero, CA.categoria, P.peso, CO1.competidor, CO2.competidor
   FROM cuadros C, generos G, categorias CA, pesos P competidores CO1, competidores CO2
   WHERE (C.cod_genero = G.cod_genero) 
   AND (C.cod_categoria = CA.cod_categoria) 
   AND (C.cod_peso = P.cod_peso)
   AND (C.competidorL = CO1.cod_competidor) AND (C.competidorV = CO2.cod_competidor)
Si todos los competidores de CUADRO no estan vacios no hay problemas, pero si uno de los dos es 0 la consulta no devuelve nada. Lo he intentado asi OR ((C.competidorL = CO1.cod_competidor) OR (C.competidorV = CO2.cod_competidor)) pero tampoco me sale.
Mecesito una solucion para que cuando sean 0 me devuelva la consulta las columnas pertimentes pero en los competidores cero o su valor.


Saludos y gracias.

Casimiro Notevi 19-03-2015 16:36:42

Por favor, no olvides poner títulos descriptivos a tus preguntas.

Y recuerda poner los tags al código fuente, ejemplo:



Gracias :)

emeritos 19-03-2015 16:56:27

Código Delphi [-]
SELECT G.genero, CA.categoria, P.peso, CO1.competidor, CO2.competidor
FROM cuadros C, generos G, categorias CA, pesos P competidores CO1, competidores CO2
WHERE (C.cod_genero = G.cod_genero) AND (C.cod_categoria = CA.cod_categoria) AND (C.cod_peso = P.cod_peso)
AND (C.competidorL = CO1.cod_competidor) AND (C.competidorV = CO2.cod_competidor)
Este es el codigo

Neftali [Germán.Estévez] 19-03-2015 17:13:19

¿Qué base de datos está utilizando?

Prueba algo así:

Código SQL [-]
SELECT G.genero, CA.categoria, P.peso, CO1.competidor, CO2.competidor
FROM cuadros C 
LEFT JOIN generos G ON (C.cod_genero = G.cod_genero)
LEFT JOIN categorias CA ON (C.cod_categoria = CA.cod_categoria)
LEFT JOIN pesos P ON (C.cod_peso = P.cod_peso)
LEFT JOIN competidores CO1 ON (C.competidorL = CO1.cod_competidor)
LEFT JOIN competidores CO2 ON (C.competidorV = CO2.cod_competidor)

Si te dan problemas, elimina los paréntesis de los ON.


La franja horaria es GMT +2. Ahora son las 10:28:33.

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