SQL - Ayuda con sentencia sql en mysql

 
Vista:
sin imagen de perfil

Ayuda con sentencia sql en mysql

Publicado por Manuel Ramirez (2 intervenciones) el 14/03/2012 14:39:36
Hola amigos programadores, necesito que alguien me ayude con una consulta de dos tablas que en realidad no he podido solventar.

tengo dos tablas una llamada agencias, y otra conexiones

en agencias describo el codigo de agencias y sus datos
y en conexiones el tipo de conexiones o dispositivos que usa, pero tiene un campo que me describe en que agencia esta con el codigo de agencia y quiero mostrar un reporte en donde me especifique solo tres tipos de dispositivos de todos los que guarda y que en ves de mostrarme el codigo agencia me extraiga el nombre de ese codigo de la tabla agencias y me lo muestre en el reporte. pero de la forma que lo he hecho que creo que es la correcta me muestra todos los campos repetidos por cada agencia de la trabla agencias. de antemano les agradezco su colaboracion...

a continuacion le muestro la sentencia que tengo:

$sql="SELECT agencias.NomAge,
conexiones.TipoConex,
conexiones.NumConex,
conexiones.Imei,
conexiones.SerialConex1,
conexiones.SerialDec,
conexiones.SerialHex,
conexiones.Operadora
FROM agencias,conexiones
WHERE conexiones.TipoConex='Axesstel EvDO'
OR conexiones.TipoConex='Pendrive 3G'
OR conexiones.TipoConex='Modem ABA'
AND conexiones.CodAge = agencias.CodAge
ORDER BY conexiones.".$orden." ".$forma."";

nota: uso php y las variables orden es bajo que campo quiero el orden y de forma asc o desc
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con sentencia sql en mysql

Publicado por leonardo_josue (1173 intervenciones) el 14/03/2012 16:31:16
Hola Manuel Ramirez:

Hay varios detalles que tienes que tomar a consideración en tu consulta:

Primero, mucho ojo cuando mezcles condiciones AND y OR en un WHERE, ya que como los operadores matemáticos estos operadores TIENEN UNA JERARQUÍA DIFERENTE. En matemáticas

1
2 + 3 * 5 = 17


La multiplicación TIENE MÁS JERARQUÍA QUE LA SUMA, por lo tanto se evalua primero, para alterar el orden en que se deben ejecutar las operaciones utilizamos los paréntesis

1
(2+3) * 5 = 25


Primero se ejecutan todas las operaciones entre paréntesis y después se continua con la evaluación de la expresión. Como te digo, esto mismo ocurre con los operadores AND y OR. And tiene una jerarquía mayor al OR, por lo tanto, al poner esto:
1
2
3
4
conexiones.TipoConex='Axesstel EvDO'
OR conexiones.TipoConex='Pendrive 3G'
OR conexiones.TipoConex='Modem ABA'
AND conexiones.CodAge = agencias.CodAge


Primero se ejecuta la condición marcada en negritas, y después se continua con el resto, la condición tendrías que ponerla así:

1
2
3
4
(conexiones.TipoConex='Axesstel EvDO'
OR conexiones.TipoConex='Pendrive 3G'
OR conexiones.TipoConex='Modem ABA')
AND conexiones.CodAge = agencias.CodAge


Finalmente, ES RECOMENDABLE UTILIZAR JOIN'S en lugar de uniones explícitas:

1
2
3
4
5
En lugar de hacer esto:
FROM tabla1, tabla2 WHERE tabla1.campo = tabla2.campo
 
Usa esto:
FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo


Aunque el resultado es el mismo las diferencias en performance son significativas, además de que las consultas quedan más legibles.

Haz la prueba y nos comentas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con sentencia sql en mysql

Publicado por Manuel Ramirez (2 intervenciones) el 14/03/2012 19:42:21
Muchas gracias Leo, de verdad me sirvio tu ayuda, ahora si me muestra el reporte como quiero. Claro tenia la duda de las operaciones en mysql puesto que ni idea que podia utilizar simbolos como parentesis o que se aplicaban las mismas reglas como en eritmetica. ya estoy montado en dos proyectos importantes y no he optimizado las consultas debido a que no he entendido mucho sobre los inner join.
Uno de los proyectos es este, sobre gestion de equipos de computacion para distintas sucursales administrados por un almacen, en donde se dan entrada y salida de equipos y se lleva el inventario de cada sucursal tomando en cuenta que son mas de 300 sucursales pequeñas de al menos 2 a 5 equipos c/u.
claro que solo he podido hacer los registros de equipos y otras pequeñas cosas como: articulos, proveedores, usuarios,etc,

Tengo otra duda que tal vez tu me podrias opinar a ver si aclaro. solo dime si puedo contar contigo y te comento? y nuevamente gracias por tu ayuda...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con sentencia sql en mysql

Publicado por leonardo_josue (1173 intervenciones) el 14/03/2012 20:17:40
Son muchas cosas las que puedes hacer con SQL... es más, dependiendo de la BD que estés utilizando, algunos son como verdaderos lenguajes de programación, con procedimientos, funciones, ciclos, condiciones, etc. es cuestión de investigar y leer...

En cuanto a las dudas con los JOIN's... pregúntale a Santa Wikipedia.

http://es.wikipedia.org/wiki/Join

Creo que ahí está muy bien explicado como funcionan los distintos tipos de JOIN's. Cualquier duda que pudieras tener publícala en el foro como un tema nuevo, para ir cerrando cada cuestión. Si no soy yo, algún otro forista estará dispuesto a tratar de ayudarte.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar