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

consulta de un select

Estas en el tema de consulta de un select en el foro de Mysql en Foros del Web. Hola que tal amigos solamente necesitaba saber si esta consulta esta bien formulada @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $sql = mysql_query ( "SELECT * ...
  #1 (permalink)  
Antiguo 29/01/2011, 03:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
consulta de un select

Hola que tal amigos solamente necesitaba saber si esta consulta esta bien formulada
Código PHP:
Ver original
  1. $sql=mysql_query("SELECT * FROM articulos JOIN rubros JOIN subrubros JOIN proveedores JOIN impuestos JOIN monedas WHERE articulos.rubro = rubros.rub_id AND articulos.subrubro = subrubros.subrub_id  AND articulos.proveedor=proveedores.proveedor_id  AND articulos.iva=impuestos.iva_id  AND articulos.moneda=mone_id  ORDER BY arti_id asc   ",Conectar::con());
, Asi como esta funciona, yo necesitaba saber es si se puede optimizar ya que no tengo experiencia en mysql
Saludos y muchas gracias
  #2 (permalink)  
Antiguo 29/01/2011, 05: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: 16 años, 4 meses
Puntos: 2658
Respuesta: consulta de un select

Código MySQL:
Ver original
  1.     articulos JOIN
  2.     rubros JOIN
  3.     subrubros JOIN
  4.     proveedores JOIN
  5.     impuestos JOIN monedas
  6.     articulos.rubro = rubros.rub_id AND
  7.     articulos.subrubro = subrubros.subrub_id  AND
  8.     articulos.proveedor=proveedores.proveedor_id AND
  9.     articulos.iva=impuestos.iva_id  AND
  10.     articulos.moneda=mone_id  
  11. ORDER BY arti_id asc ;
Sintácticamente parece estar bien, pero no es optima.
Para optimizarla deberías mostrarnos como es la estructura de cada tabla vinculada en el JOIN, de modo de poder ver mejor sus relaciones y sus columnas. SIn eso es difícil encontrarle alternativas.
Lo que te puedo ir anticipando es que todo lo que has puesto en el WHERE está mal ubicado. Cada uno de esos es una condición del ON de cada JOIN y va en el FROM. Eso sí es eficiente, pero sigue sin estar optimizado.

Código MySQL:
Ver original
  1.     articulos  A JOIN  rubros R ON A.rubro = R.rub_id
  2.     JOIN  subrubros S ON A.subrubro = S.subrub_id
  3.     JOIN  proveedores P ON A.proveedor = P.proveedor_id
  4.     JOIN impuestos I ON A.iva = I.iva_id
  5.     JOIN monedas M ON A.moneda = M.mone_id  
  6. ORDER BY arti_id asc ;
Otra cosa que se puede decir: La tabla devuelta tendrá como columnas la sumatoria de las columnas de todas las tablas del FROM. ¿Realmente necesitas TODAS? ¿No sería mejor indicar qué columnas se necesitan?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/01/2011, 05:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: consulta de un select

Hola como estas Muchas gracias por tu ayuda.
Del FROM tengo que traer todas las columnas, de lo que no tengo que traer todo es de los JOIN , solamente las columnas que tengo que vincular con articulos , tengo entendido que haciendo JOIN me trae unicamente las columnas que tengo que vincular , esto es asi?
Saludos.
  #4 (permalink)  
Antiguo 29/01/2011, 08:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: consulta de un select

Echa un vistazo aquí:
http://dev.mysql.com/doc/refman/5.0/en/join.html
ahí veras las diferencias de usar NATURAL JOIN, JOIN ... USING, INNER JOIN ... ON
No dejes nada al azar y usa siempre que puedas sintaxis poco ambiguas, porque si usas NATURAL JOIN y luego cambias el nombre de algún campo o añades otro nuevo que coincidiera con uno existente, tendrías problemas.
  #5 (permalink)  
Antiguo 29/01/2011, 11:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: consulta de un select

buenisimo gracias

Etiquetas: select
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:33.