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

Consulta correlacionada, o no?

Estas en el tema de Consulta correlacionada, o no? en el foro de Mysql en Foros del Web. Buenas, despues de mucho buscar no he dado con la soluccion a mis problemas con un par de consultas que en principio pense que serian ...
  #1 (permalink)  
Antiguo 13/09/2010, 22:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 7 meses
Puntos: 0
Consulta correlacionada, o no?

Buenas, despues de mucho buscar no he dado con la soluccion a mis problemas con un par de consultas que en principio pense que serian muy faciles de hacer.



-La tabla1 tiene "col11" nombre del lugar y "col12" id del lugar.
-La tabla2 tiene "col21" id del lugar y "col22" numero que uso para clasificar.
-Estoy buscando que al poner 11 me salgan los nombres de los lugares que su numero de clasificacion empiezan por 11.

Entre las pruebas, la siguiente.

xxx = valor

SELECT * FROM tabla1, tabla2 WHERE tabla1.col11 =(SELECT * FROM tabla2 WHERE tabl2.col22 LIKE 'xxx%'

Otra prueba

SELECT * FROM tabla1, tabla2 WHERE tabla2.col22 LIKE 'xxx%' AND tabla1.col12 = tabla2.col21




He estado buscando documentacion sobre el tema y tal y aun asi no me aclaro, si alguien me puede recomendar algo para que aprenda del tema tambien sera bienvenido.


Muchas gracias.
  #2 (permalink)  
Antiguo 13/09/2010, 22:52
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: Consulta correlacionada, o no?

SELECT col11 FROM tabla2 LEFT JOIN tabla1 ON col21=col12 WHERE col22 LIKE "xxx%"

no antepongo el nombre de la tabla en los campos, ya que ningun campo tiene igual nombre que en la otra tabla.

salu2

Última edición por Perr0; 13/09/2010 a las 23:51
  #3 (permalink)  
Antiguo 14/09/2010, 03:05
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 correlacionada, o no?

Código MySQL:
Ver original
  1. FROM tabla1, tabla2
  2. WHERE tabla1.col11 =(SELECT * FROM tabla2 WHERE tabl2.col22 LIKE 'xxx%'
Esta no te funcionará porque para funcionar la tabla tabla2 debería tener un sólo campo.
Código SQL:
Ver original
  1. SELECT *
  2. FROM tabla1, tabla2
  3. WHERE tabla2.col22 LIKE 'xxx%' AND tabla1.col12 = tabla2.col21
Esta requiere que las dos condiciones se den al mismo tiempo. ¿Tienes registros así?
Código MySQL:
Ver original
  1. SELECT col11
  2. FROM tabla2 LEFT JOIN tabla1 ON col21=col12
  3. WHERE col22 LIKE "xxx%"
Esta está bien escrita, por lo que debería devolverte todos los registros que en el campo col22 el valor comience con el valor ingresado, que es lo que se supone que estás solicitando.
Pero también te puede devolver todos los registros de la primera tabla que cumplan la condición, incluyendo los que no tengan relación con la segunda tabla... ¿Eso quieres?
__________________
¿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 14/09/2010, 19:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 7 meses
Puntos: 0
Mensaje Respuesta: Consulta correlacionada, o no?

Hola.

Con el codigo de gnzsoloyo
SELECT *
FROM tabla1, tabla2
WHERE tabla2.col22 LIKE 'xxx%' AND tabla1.col12 = tabla2.col21

Obten el resultado que queria y es todos los valores de tabla1.col11 cuando tabla1.col12 es igual tabla2.col21 y tabla2.col22 empieza por XXXX.


--Despues de darle vueltas he pensado que puedo mejorar mis consultas haciendo unos pequeños cambios. El sentido le veo a la consulta pero no consigo que me salga, pongo los que tengo y a ver que os parece y como la harias vosotros.


Tabla1.id_lugar2___tabla1.nombre
01011001...................El Molar
01011002...................Pedrezuela
01012001...................El Vellon
01031001...................Ponferrada
01041001...................Alcoy

Tabla2.clasificacion___Tabla2.ud_lugar1
10111...........................01011
10121...........................01012
10211...........................01031
10311...........................01041


El codigo seria algo asi.

SELECT * FROM tabla2, tabla1 WHERE tabla2.clasificacion LIKE 'xxx%' AND Tabla1.id_lugar2 LIKE 'Tabla2.ud_lugar1%'

Y me daria de resultado XXX= 101, El molar, Pedrezuela, El vellon
XXX= 1011 El Molar, Pedrezuela


¿se podria realizar una consulta de este tipo?
¿recomendais algun libro o sitio para aprender sobre el tema?



Muchas gracias.

Etiquetas: Ninguno
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 19:01.