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

condicion pre-join

Estas en el tema de condicion pre-join en el foro de Mysql en Foros del Web. Una consulta se puede realizar una condición antes de hacer los joins en un select? por ejemplo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT campos ...
  #1 (permalink)  
Antiguo 23/02/2011, 09:15
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
condicion pre-join

Una consulta

se puede realizar una condición antes de hacer los joins en un select?

por ejemplo

Código MySQL:
Ver original
  1. SELECT campos
  2. FROM tablas
  3. condiciones pre_join
  4. JOIN tabla2 ON condiciones_join
  5. condiciones post_join

saludos.

si no existe la verdad sería muy bueno que lo implementaran los de oracle xD
  #2 (permalink)  
Antiguo 23/02/2011, 09:23
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 2 meses
Puntos: 89
Respuesta: condicion pre-join

Que yo sepa no existe, pero tampoco le veo la utilidad.
  #3 (permalink)  
Antiguo 23/02/2011, 09:39
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: condicion pre-join

para eso existen las subconsultas que generan tablas derivadas, y el ON de los JOIN:

Código MySQL:
Ver original
  1.        campos
  2. FROM (SELECT * FROM tablas WHERE [condiciones pre_join]) T1
  3.          JOIN tabla2 ON condiciones_join
  4.           condiciones post_join
__________________
¿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 23/02/2011, 09:49
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: condicion pre-join

Tienes toda la razon ps, como habia olvidado los selects anidados xDDDD

Gracias, ya se como solucionarlo :P
  #5 (permalink)  
Antiguo 23/02/2011, 09:55
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: condicion pre-join

Una ultima consulta, pueden haber SELECTs anindados como tablas para los JOIN?
sorry por tanta pregunta que toy recien familiarizandome con JOIN xD

p.e.

Código MySQL:
Ver original
  1. SELECT campos
  2. FROM tablas
  3. JOIN (SELECT campos2 FROM tablas WHERE conditions) AS tabla2 ON conditions
  4. WHERE conditions
  #6 (permalink)  
Antiguo 23/02/2011, 10:41
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: condicion pre-join

Es igual que en el otro ejemplo. La únia diferencia es que en lugar de usar una tabla derivada como primera tabla la usas en la segunda...
¿Cuál es tu duda?

Incluso podría ser así:
Código MySQL:
Ver original
  1.        campos
  2.     (SELECT * FROM tablas WHERE [condiciones pre_join]) T1
  3.     INNER JOIN
  4.         (SELECT *
  5.         FROM
  6.             (SELECT * FROM tabla2 WHERE [condiciones pre_join]) T2
  7.         WHERE [condiciones pre_join]) T3 ON [condiciones]
  8.       LEFT JOIN (SELECT * FROM tablas WHERE [condiciones]) T4 ON [condiciones]
  9.           condiciones
...y aún seguiría funcionando.
Yo tengo consultas más complejas que eso.
__________________
¿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 23/02/2011, 11:46
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: condicion pre-join

Si si, solo queria aclararmelo xD
Es que solo me habian enseñado joins implicitos D:
pero ahora ya me peino con la sentencia JOIN (H)
  #8 (permalink)  
Antiguo 23/02/2011, 11:59
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: condicion pre-join

Los JOIN implícitos no son una muy buena práctica, si no te aseguras que los campos de las tablas tienen nombres diferenciados cuando no se tata d claves primarias y foráneas.
El uso de la coma para generarlos es muy usual, pero resulta ineficiente a la hora de medir la performance, y terminan generando más problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

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:53.