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

Consulta y Subconsulta

Estas en el tema de Consulta y Subconsulta en el foro de Mysql en Foros del Web. Hola, no soy un experto en Mysql y trate de ralizar una consulta y subconsulta en Mysql y no logro hacerla funcionar, me gustaria si ...
  #1 (permalink)  
Antiguo 30/04/2013, 21:28
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Consulta y Subconsulta

Hola, no soy un experto en Mysql y trate de ralizar una consulta y subconsulta en Mysql y no logro hacerla funcionar, me gustaria si me dan una manito porfavor, desde ya muchas gracias.

Lo que necesitop saber de la Base de Datos es Las coincidencias de nombres y apellidos con MATCH AGAIN y ordenado por Score de una subconsulta de fechas BETWEEN, las consultas por separado funcionan, pero cuando las junte no hay caso.
Código MySQL:
Ver original
  1. SELECT * from internaciones  
  2. WHERE fecha BETWEEN TIMESTAMP('$fecha1') AND TIMESTAMP('$fecha2') in (SELECT *  FROM   internaciones
  3. WHERE MATCH ( apellido, nombre ) AGAINST ( '$buscar' ))

Gracias

Última edición por gnzsoloyo; 30/04/2013 a las 21:38 Razón: SQL sin etiquetar.
  #2 (permalink)  
Antiguo 30/04/2013, 21:58
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta y Subconsulta

Creo que hay algo mal en la consulta pero igual te planteo una alternativa, supongo que en internaciones tenes algo único, pongamosle... un id_inter.

Código MySQL:
Ver original
  1. SELECT * FROM internaciones
  2. WHERE (fecha BETWEEN TIMESTAMP('$fecha1') AND TIMESTAMP('$fecha2'))
  3.     AND id_inter IN (SELECT b.id_inter FROM internaciones b WHERE MATCH (apellido,nombre) AGAINST ('$buscar'))

Si no funciona lo reviso, saludos.

Última edición por gnzsoloyo; 30/04/2013 a las 21:59 Razón: SQL no etiquetado. Usar highlight "MySQL"
  #3 (permalink)  
Antiguo 01/05/2013, 10:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

HOLA!!!, desde ya gracias por tu ayuda, esto me esta volviendo loco y todo por una buena causa, te comeno es ua bd para un hospitalito donde trabajo y que aun registran todo en papel y queria darles una mano con eso.. por ello como mas o menos entiendo algo me puse a hacerles esto....

como decias si tengo en la tabla internaciones un idinternacion unico..

probe lo que me dijiste asi:

Código MySQL:
Ver original
  1. FROM internaciones
  2. WHERE (fecha BETWEEN TIMESTAMP('$fecha1') AND TIMESTAMP('$fecha2'))
  3. AND idinternacion IN (SELECT  idinternacion FROM internaciones  WHERE MATCH (apellido,nombre) AGAINST ('$buscar'))

pero no me arrojo nngun resultado

luego lo puse en phpmyadmin asi
Código MySQL:
Ver original
  1. SELECT * FROM internaciones
  2. WHERE (fecha BETWEEN TIMESTAMP('2013-01-01') AND TIMESTAMP('2013-04-30'))
  3. AND idinternacion IN (SELECT  idinternacion FROM internaciones  WHERE MATCH (apellido,nombre) AGAINST ('perez grabr'))

y me arrojo los 2 resultados que coinciden con la busqueda

obviamente funciona en phpmyadmin y estoy tratando de ver que sucede que desde la cnonsulta no funciona.... sos un genio muchas Gracias y espero tu resp. a ver si tenes idea donde le estoy fallando... GRACIAS!!!

Última edición por gnzsoloyo; 01/05/2013 a las 13:36 Razón: SQL sin etiquetar. Usar Highlight "MySQL"
  #4 (permalink)  
Antiguo 01/05/2013, 10:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

SOLUCIONADO ...aunque no lo creas estaba mandando el post a otro archivo ajaj

ahora si no te molesta te comento el otro problema que tengo con otra consulta:

Código MySQL:
Ver original
  1. SELECT DISTINCT obrasocial, count( obrasocial ) AS p18
  2. FROM consulta
  3. WHERE obrasocial=2 GROUP BY obrasocial and fechacons BETWEEN TIMESTAMP('$fecha1')
  4. AND TIMESTAMP('$fecha2')

esa consulta me esta devolviendo siempre el total de la btable y no discrimina con obrasocial=2...

Mientras lo lees trato de entender tu solucion anterior a ver si puedo emplearla aca,

DESDE YA MUCHISIMAS GRACIAS... siempre leo el foro y todo lo que se lo aprendi de aca :) GRACIAS

Última edición por gnzsoloyo; 01/05/2013 a las 13:35 Razón: SQL sin etiquetar. Usar Highlight "MySQL"
  #5 (permalink)  
Antiguo 01/05/2013, 11:04
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

INtento esto pero no me da nada

Código MySQL:
Ver original
  1. from consulta
  2. where (fechacons BETWEEN TIMESTAMP('2013-02-01') AND TIMESTAMP('2013-04-26'))
  3. AND obrasocial IN (SELECT DISTINCT obrasocial, count( obrasocial )  FROM consulta WHERE obrasocial>2 GROUP BY obrasocial)

Última edición por gnzsoloyo; 01/05/2013 a las 13:35 Razón: SQL sin etiquetar. Usar Highlight "MySQL"
  #6 (permalink)  
Antiguo 01/05/2013, 11:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

ya logre que los busque... me faltaria agrupar para contarlos..

Código MySQL:
Ver original
  1. from consulta
  2. where (fechacons BETWEEN TIMESTAMP('2013-04-27') AND TIMESTAMP('2013-04-29'))
  3. AND idconsulta  IN (SELECT idconsulta  FROM consulta WHERE obrasocial=2 )

estoy viendo donde meter el COUNT

Última edición por gnzsoloyo; 01/05/2013 a las 13:35 Razón: SQL sin etiquetar. Usar Highlight "MySQL"
  #7 (permalink)  
Antiguo 01/05/2013, 12:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

LO HICE!!!!!!!!!!!!!!
La consulta es
Código MySQL:
Ver original
  1. SELECT idconsulta, COUNT( * ) cant
  2. from consulta
  3. where (fechacons BETWEEN TIMESTAMP('$fecha1') AND TIMESTAMP('$fecha2'))
  4. AND idconsulta  IN (SELECT idconsulta  FROM consulta WHERE obrasocial=2 )

GRACIAS POR TU AYUDA ME SIRVIO MUCHISIMO, sin eso no podria haber logrado esto... GRACIAS

Última edición por gnzsoloyo; 01/05/2013 a las 13:34 Razón: SQL sin etiquetar. Usar Highlight "MySQL"
  #8 (permalink)  
Antiguo 01/05/2013, 15:35
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta y Subconsulta

Disculpa recien llego y no pude ver tus otras consultas.
Pero bueno me alegro que la primera te haya servido!
Saludos XD
  #9 (permalink)  
Antiguo 01/05/2013, 17:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 45
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Consulta y Subconsulta

te jodo 1 vez mas, en la consulta q me hiciste

Código MySQL:
Ver original
  1. SELECT *,
  2. FROM internaciones
  3. WHERE (fecha BETWEEN TIMESTAMP('$fecha1') AND TIMESTAMP('$fecha2'))
  4. AND idinternacion IN (SELECT  idinternacion FROM internaciones  WHERE MATCH (apellido,nombre) AGAINST ('$buscar'))

donde puedo meter un ORDER By Score

GRACIAS!!

Última edición por gnzsoloyo; 01/05/2013 a las 17:42 Razón: SQL sin etiquetar
  #10 (permalink)  
Antiguo 01/05/2013, 17:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta y Subconsulta

Por favor, etiqueten los códigos SQL con los Highligts "SQL" o "MySQL".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 01/05/2013, 17:43
 
Fecha de Ingreso: abril-2013
Mensajes: 23
Antigüedad: 10 años, 11 meses
Puntos: 1
Respuesta: Consulta y Subconsulta

Si lo pones al final de toda la consulta que planteaste debería funcionar.

Código SQL:
Ver original
  1. SELECT*
  2. FROM internaciones
  3. WHERE todaslascondiciones
  4. ORDER BY score ASC

Si no lo hace, lo vemos.
Saludos!

Última edición por todosolucionesweb; 01/05/2013 a las 17:44 Razón: highlight

Etiquetas: select, sql, subconsulta
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 16:53.