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

¿por que ordenamiento de consulta cambia segun los campos que jale?

Estas en el tema de ¿por que ordenamiento de consulta cambia segun los campos que jale? en el foro de Mysql en Foros del Web. la verdad que no tiene sentido eso. hago la consulta y depende la cantidad de campos que jale es el ordenamiento que tiene a pesar ...
  #1 (permalink)  
Antiguo 23/07/2016, 13:54
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
¿por que ordenamiento de consulta cambia segun los campos que jale?

la verdad que no tiene sentido eso.
hago la consulta y depende la cantidad de campos que jale es el ordenamiento que tiene a pesar de que tengo un order by..
cabe destacar que es una consulta relacionada con 3 tablas y un join a otra cuarta tabla y que solamente me ocurre el problema cuando uso una subquery de count relacionada con una de las 3 tablas esta presente y la misma uso para ordenar.

la consulta es la siguiente

Código SQL:
Ver original
  1. SELECT tabla1.campo1,tabla2.campo2,tabla3.campo3,subquery(SELECT COUNT(*) AS c
  2. FROM tabla4 WHERE tabla4.id=tabla1.id) AS total FROM tabla2,tabla1
  3. LEFT joint tabla3 ON tabla1.id=tabla3.id
  4. WHERE tabla1.id=tabla2.id AND tabla1.id=tabla3.id ORDER BY total

la verdad que no se por que pasa eso
de antemano gracias
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #2 (permalink)  
Antiguo 03/08/2016, 16:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: ¿por que ordenamiento de consulta cambia segun los campos que jale?

Cita:
Iniciado por minombreesmm Ver Mensaje
la verdad que no tiene sentido eso.
hago la consulta y depende la cantidad de campos que jale es el ordenamiento que tiene a pesar de que tengo un order by..
cabe destacar que es una consulta relacionada con 3 tablas y un join a otra cuarta tabla y que solamente me ocurre el problema cuando uso una subquery de count relacionada con una de las 3 tablas esta presente y la misma uso para ordenar.

la consulta es la siguiente

Código SQL:
Ver original
  1. SELECT tabla1.campo1,tabla2.campo2,tabla3.campo3,subquery(SELECT COUNT(*) AS c
  2. FROM tabla4 WHERE tabla4.id=tabla1.id) AS total FROM tabla2,tabla1
  3. LEFT joint tabla3 ON tabla1.id=tabla3.id
  4. WHERE tabla1.id=tabla2.id AND tabla1.id=tabla3.id ORDER BY total

la verdad que no se por que pasa eso
de antemano gracias
Hola,

Yo soy de los que piensan que los JOINS fueron creados en vano.

He desarrollado millones de lineas de código, utilizando MySQL como origen de datos, con Sentencias SQL que involucran n tablas, y jamás usé un JOIN.

He sorteado los resultados a mi gusto sin problemas.

Pero en tu duda, mencionas el Subquery..

Yo por Subquery entendí siempre esto

http://dev.mysql.com/doc/refman/5.7/en/subqueries.html

No pude ejecutar nada usando la función SUBQUERY..

Intenta hacerlo como lo tienen en la documentación de MySQL.

Saludos
__________________
Pablo Tilotta
Super MySQL
El mejor y mas rápido MySQL Manager para ANDROID
Super MySQL en Play Store
  #3 (permalink)  
Antiguo 03/08/2016, 16:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: ¿por que ordenamiento de consulta cambia segun los campos que jale?

Cita:
Iniciado por ptilotta Ver Mensaje
Hola,

Yo soy de los que piensan que los JOINS fueron creados en vano.

He desarrollado millones de lineas de código, utilizando MySQL como origen de datos, con Sentencias SQL que involucran n tablas, y jamás usé un JOIN.

He sorteado los resultados a mi gusto sin problemas.
Los joins fueron creados para dar mejor performance en las consultas, es mejor utilizar joins implicitos que joins explicitos, no solo los hicieron por hacerlos, ademas se ve que estas viendo el uso de joins desde el punto de vista de desarrollador, no de DBA o especialista en bases de datos.

ahora porque te ordena dependiendo las columnas que obtienes en el select? Esto es porque los datos que te regresa la base de datos no tiene un orden especifico, a menos que tu lo indiques, asi es como trabajan los manejadores de bases de datos, te regresan la informacion que solicitas en un orden aleatorio, a menos que uses un order by o que alguna de las columnas sea parte de un indice.

Ahora porque no utilizas los joins en tu consulta, porque un join explicito y luego uno implicito?



Código MySQL:
Ver original
  1. SELECT tabla1.campo1,tabla2.campo2,tabla3.campo3, total.c
  2. FROM tabla2
  3. inner join tabla1  on tabla2.id=tabla1.id
  4. LEFT joint tabla3 ON tabla1.id=tabla3.id
  5. left join (SELECT COUNT(*) AS c, tabla4.id
  6. FROM tabla4 group by id) as total on total.id=tabla2.id
  7. ORDER BY total.c
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 03/08/2016 a las 16:29
  #4 (permalink)  
Antiguo 03/08/2016, 16:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 35
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: ¿por que ordenamiento de consulta cambia segun los campos que jale?

Cita:
Iniciado por Libras Ver Mensaje
Los joins fueron creados para dar mejor performance en las consultas, es mejor utilizar joins implicitos que joins explicitos, no solo los hicieron por hacerlos, ademas se ve que estas viendo el uso de joins desde el punto de vista de desarrollador, no de DBA o especialista en bases de datos.
Es probable, que la haya visto como desarrollador.

Pero en definitiva, funcionan y en consultas normales (de algunos cientos de miles de filas de resultado) funcionan perfectamente sin grandes delays.

Saludos
__________________
Pablo Tilotta
Super MySQL
El mejor y mas rápido MySQL Manager para ANDROID
Super MySQL en Play Store
  #5 (permalink)  
Antiguo 03/08/2016, 17:07
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: ¿por que ordenamiento de consulta cambia segun los campos que jale?

Cita:
Iniciado por ptilotta Ver Mensaje
Es probable, que la haya visto como desarrollador.

Pero en definitiva, funcionan y en consultas normales (de algunos cientos de miles de filas de resultado) funcionan perfectamente sin grandes delays.

Saludos
Asi es nadie dijo q no funcionaran, pero no es lo mas optimo, es como querer matar una mosca, puedes usar un matamoscas, la mano, un zapato o hasta una bazuca, pero hay un metodo q es el mas efectivo ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: campo, campos, ordenamiento, select, tabla
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 11:13.