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

Como ordeno resultados con un campo de otra talba

Estas en el tema de Como ordeno resultados con un campo de otra talba en el foro de Mysql en Foros del Web. Hola. Tengo un problema con una consulta a una bd y les agradeceria mucho si me pudieran ayudar. Tengo dos tablas: Noticias. Cita: -----Noti_id-----titulo-----sección -----01--------titulo1----seccion1 ...
  #1 (permalink)  
Antiguo 20/02/2012, 17:19
 
Fecha de Ingreso: septiembre-2009
Mensajes: 306
Antigüedad: 14 años, 7 meses
Puntos: 10
Como ordeno resultados con un campo de otra talba

Hola.

Tengo un problema con una consulta a una bd y les agradeceria mucho si me pudieran ayudar.

Tengo dos tablas:
Noticias.
Cita:
-----Noti_id-----titulo-----sección
-----01--------titulo1----seccion1
-----02--------titulo2----seccion2
-----03--------titulo3----seccion3
-----04--------titulo4----seccion1
-----05--------titulo5----seccion2
y otra llamada ranking.
Cita:
-----Rank_id-----Noti_id-----sección-----rank
-------01---------02------seccion1------01
-------02---------02------seccion2------01
-------03---------02------seccion3------02
-------04---------05------seccion1------03
-------05---------05------seccion2------02
-------05---------05------seccion3------02
Ahora bien, necesito hacer una consulta para conseguir el campo "titulo" de la tabla noticias donde seccion sea igual a "seccion2", ahora necesito ordenar esos resultados segun el campo "rank" de la tabla "Ranking" donde los campos Noti_id y sección sean iguales a los de la tabla Noticias.

No se si me doy a entnder.
__________________
Mantente al tanto del acontecer Turistico nacional
Visita el Parque Bicentenario El Salvador
  #2 (permalink)  
Antiguo 20/02/2012, 20:27
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: Como ordeno resultados con un campo de otra talba

Cita:
Ahora bien, necesito hacer una consulta para conseguir el campo "titulo" de la tabla noticias donde seccion sea igual a "seccion2", ahora necesito ordenar esos resultados segun el campo "rank" de la tabla "Ranking" donde los campos Noti_id y sección sean iguales a los de la tabla Noticias.
Bueno, eres un poco confuso explicando, pero la idea es que si quieres que un SELECT devuelva resultados de una tabla ordenados según otra, ambas tablas deben ser invocadas en un JOIN en esa consulta. Y en ese caso lo único que necesitas es usar el ORDER BY indicando qué columna de qué tabla es la que usas para ordenar.
En esencia, es lo mismo que hacerlo en con una sola tabla...:
Código MySQL:
Ver original
  1.     N.Noti_id,
  2.     N.titulo,
  3.     N.sección,
  4.     R.rank
  5. FROM noticias N INNER JOIN ranging ON N.Noti_id = R_Noti_id
  6. WHERE N.seccion = 'seccion2'
  7. ORDER BY R.rank, N.titulo
__________________
¿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 21/02/2012, 15:03
 
Fecha de Ingreso: septiembre-2009
Mensajes: 306
Antigüedad: 14 años, 7 meses
Puntos: 10
Respuesta: Como ordeno resultados con un campo de otra talba

ya habia visto con inner join pero me sure una duda, y es en la segunda tabla puede -o no- haber mas de una entrada con el mismo Noti_id, asi que necesito que ademas demas de que coincidan N.Noti_id con R.Noti_id, tambien necesito aseguarme que N.seccion sea igual a R.seccion. Eso se puede hacer con la consulta que me recomiendas? por logica me pareceria que tendria que agreagarle a la clausua where asi:

Código MySQL:
Ver original
  1.     N.Noti_id,
  2.     N.titulo,
  3.     N.sección,
  4.     R.rank
  5. FROM noticias N INNER JOIN ranging ON N.Noti_id = R_Noti_id
  6. WHERE N.seccion = 'seccion2' AND R.seccion = 'seccion2'
  7. ORDER BY R.rank, N.titulo
no se si estoy en lo correcto
__________________
Mantente al tanto del acontecer Turistico nacional
Visita el Parque Bicentenario El Salvador
  #4 (permalink)  
Antiguo 21/02/2012, 15:49
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Como ordeno resultados con un campo de otra talba

Hola severicks:

En la sección ON puedes agregar todas las condiciones que se tengan que considerar para hacer la unión separándolas con los operadores AND y OR.

Código MySQL:
Ver original
  1.     N.Noti_id,
  2.     N.titulo,
  3.     N.sección,
  4.     R.rank
  5. FROM noticias N
  6. INNER JOIN ranging R
  7. ON N.Noti_id = R.Noti_id AND N.seccion = R.seccion
  8. ORDER BY R.rank, N.titulo

Si necesitas filtrar por una sección en especial entonces puedes colocar en la sección where:

Código MySQL:
Ver original
  1.     N.seccion = 'seccion2'

Saludos
Leo.
  #5 (permalink)  
Antiguo 21/02/2012, 15:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 306
Antigüedad: 14 años, 7 meses
Puntos: 10
Respuesta: Como ordeno resultados con un campo de otra talba

ok, muchas gracias Leo y gnzsoloyo
__________________
Mantente al tanto del acontecer Turistico nacional
Visita el Parque Bicentenario El Salvador

Etiquetas: resultados, tabla, campos
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 21:07.