Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con una cosulta !!!!!!

Estas en el tema de ayuda con una cosulta !!!!!! en el foro de Mysql en Foros del Web. hola mi consulta funciona perfectamente cuando una variable o campo de la consulta la iguala a un valor numerico, pero ahora quiero que se iguale ...
  #1 (permalink)  
Antiguo 18/05/2010, 08:52
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 35
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta ayuda con una cosulta !!!!!!

hola mi consulta funciona perfectamente cuando una variable o campo de la consulta la iguala a un valor numerico, pero ahora quiero que se iguale a una cadena que contiene varios valores numericos .
TblComInt.CveEntCom=4535
cadena="4535,4536,4537,4538,4539,4540";

hora quiero k se iguale a una varible definida como cadena anteriormente: TblComInt.CveEntCom=4535



Código MySQL:
Ver original
  1. select TblIntegrantes.clave, TblIntegrantes.ApsEntInt,TblIntegrantes.NomEntInt,  Portafolios.portEntregados, Portafolios.portCal  from (select TblComInt.CveEntCom,TblEntInt.CveEntInt as clave, ApsEntInt, NomEntInt from TblComInt, TblEntInt where TblComInt.CveEntCom=4535 and TblComInt.CveEntInt=TblEntInt.CveEntInt and TblComInt.CveEntPrf=3   order by ApsEntInt, NomEntInt) as TblIntegrantes LEFT JOIN (select TblEntPrt.CveEntInt as clave2, count(TblEntPrt.CveEntPrt) as portEntregados, count(TblCalPrt.CalEntPrt) as portCal, TblEntPrt.CveIntRev, TblEntAct.CveEntAct from TblEntAct, TblAsgAct, TblEntPrt left join TblCalPrt on TblEntPrt.CveEntPrt=TblCalPrt.CveEntPrt where TblEntPrt.CveEntCom=4535 and TblEntAct.CveEntAct=TblEntPrt.CveEntAct  and TblAsgAct.CveEntCom=4535 and TblEntAct.CveEntAct=TblAsgAct.CveEntAct and TblEntPrt.CveIntRev=0 group by clave2) as Portafolios on TblIntegrantes.clave=Portafolios.clave2 order by TblIntegrantes.CveEntCom;

select TblIntegrantes.clave, TblIntegrantes.ApsEntInt,TblIntegrantes.NomEntInt, Portafolios.portEntregados, Portafolios.portCal from (select TblComInt.CveEntCom,TblEntInt.CveEntInt as clave, ApsEntInt, NomEntInt from TblComInt, TblEntInt where TblComInt.CveEntCom=4535 and TblComInt.CveEntInt=TblEntInt.CveEntInt and TblComInt.CveEntPrf=3 order by ApsEntInt, NomEntInt) as TblIntegrantes LEFT JOIN (select TblEntPrt.CveEntInt as clave2, count(TblEntPrt.CveEntPrt) as portEntregados, count(TblCalPrt.CalEntPrt) as portCal, TblEntPrt.CveIntRev, TblEntAct.CveEntAct from TblEntAct, TblAsgAct, TblEntPrt left join TblCalPrt on TblEntPrt.CveEntPrt=TblCalPrt.CveEntPrt where TblEntPrt.CveEntCom=4535 and TblEntAct.CveEntAct=TblEntPrt.CveEntAct and TblAsgAct.CveEntCom=4535 and TblEntAct.CveEntAct=TblAsgAct.CveEntAct and TblEntPrt.CveIntRev=0 group by clave2) as Portafolios on TblIntegrantes.clave=Portafolios.clave2 order by TblIntegrantes.CveEntCom;
  #2 (permalink)  
Antiguo 18/05/2010, 09:19
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: ayuda con una cosulta !!!!!!

Código SQL:
Ver original
  1. WHERE campo IN(1,2,3,4,5)

Con esto, compara campo con cualquier valor que esté dentro del IN.

es esto lo que requieres?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 18/05/2010, 09:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ayuda con una cosulta !!!!!!

Si un campo puede estar en un grupo de valores separados por comas, entonces deberías usar IN():
Código MySQL:
Ver original
  1.   TI.clave,
  2.   TI.ApsEntInt,
  3.   TI.NomEntInt,
  4.   P.portEntregados,
  5.   P.portCal
  6.     (SELECT
  7.       TCI.CveEntCom,
  8.       TEI.CveEntInt clave,
  9.       ApsEntInt,
  10.       NomEntInt
  11.     FROM TblComInt TCI INNER JOIN TblEntInt TEI USING(CveEntInt)
  12.     WHERE
  13.       TCI.CveEntCom IN(VALORES)
  14.       AND TCI.CveEntPrf=3) TI
  15.     (SELECT
  16.       TEP.CveEntInt clave2,
  17.       count(TEP.CveEntPrt) portEntregados,
  18.       count(TCP.CalEntPrt) portCal,
  19.       TEP.CveIntRev,
  20.       TEA.CveEntAct
  21.     FROM
  22.       TblEntAct TEA
  23.       INNER JOIN TblAsgAct TAA ON TEA.CveEntAct=TAA.CveEntAct
  24.       INNER JOIN TblEntPrt TEP ON TEA.CveEntAct=TEP.CveEntAct
  25.       LEFT JOIN TblCalPrt TCP ON TEP.CveEntPrt=TCP.CveEntPrt
  26.     WHERE
  27.       TEP.CveEntCom IN(VALORES)
  28.       AND TAA.CveEntCom IN(VALORES)
  29.       AND TEP.CveIntRev=0
  30.     GROUP BY clave2) P  ON TI.clave=P.clave2
  31.   ORDER BY TI.CveEntCom;
(la reescritura de la sentencia la hice para poder seguir mejor la lógica, y abreviar esos alias taaan largos)
Poniendo los valores quedaría:

Código MySQL:
Ver original
  1.   TI.clave,
  2.   TI.ApsEntInt,
  3.   TI.NomEntInt,
  4.   P.portEntregados,
  5.   P.portCal
  6.     (SELECT
  7.       TCI.CveEntCom,
  8.       TEI.CveEntInt clave,
  9.       ApsEntInt,
  10.       NomEntInt
  11.     FROM TblComInt TCI INNER JOIN TblEntInt TEI USING(CveEntInt)
  12.     WHERE
  13.       TCI.CveEntCom IN(4535,4536,4537,4538,4539,4540)
  14.       AND TCI.CveEntPrf=3) TI
  15.     (SELECT
  16.       TEP.CveEntInt clave2,
  17.       count(TEP.CveEntPrt) portEntregados,
  18.       count(TCP.CalEntPrt) portCal,
  19.       TEP.CveIntRev,
  20.       TEA.CveEntAct
  21.     FROM
  22.       TblEntAct TEA
  23.       INNER JOIN TblAsgAct TAA ON TEA.CveEntAct=TAA.CveEntAct
  24.       INNER JOIN TblEntPrt TEP ON TEA.CveEntAct=TEP.CveEntAct
  25.       LEFT JOIN TblCalPrt TCP ON TEP.CveEntPrt=TCP.CveEntPrt
  26.     WHERE
  27.       TEP.CveEntCom IN(4535,4536,4537,4538,4539,4540)
  28.       AND TAA.CveEntCom IN(4535,4536,4537,4538,4539,4540)
  29.       AND TEP.CveIntRev=0
  30.     GROUP BY clave2) P  ON TI.clave=P.clave2
  31.   ORDER BY TI.CveEntCom;
Se puede mejorar, pero sirve para la idea.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/05/2010, 09:26
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ayuda con una cosulta !!!!!!

Huesos52... Siempre de cerquita, ¿no?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/05/2010, 09:43
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 10 meses
Puntos: 360
Respuesta: ayuda con una cosulta !!!!!!

Siempre gnzsoloyo

Aunque me siento mal lo mediocre de mi respuesta con respecto a la tuya
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 18/05/2010, 09:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ayuda con una cosulta !!!!!!

Naaa.
En esencia la solución a la pregunta es la misma...
Yo por excesivo. No me gustaba mucho la forma de escribir esos alias, así que me puse a cambiarle todo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/05/2010, 10:13
 
Fecha de Ingreso: abril-2010
Ubicación: Mexico
Mensajes: 35
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda con una cosulta !!!!!!

muchas gracias Huesos y gnzsoloyo an sido de gran ayuda..

yo invito las chelas jejeje


saludos

Etiquetas: cosulta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:02.