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

[SOLUCIONADO] Ordenar una tabla utilizando una columna de otra tabla

Estas en el tema de Ordenar una tabla utilizando una columna de otra tabla en el foro de Mysql en Foros del Web. Hola amigos estoy con una duda ¿, necesito hacer una consulta en mysql para que me ordene una tabla pero el order by debe ser ...
  #1 (permalink)  
Antiguo 26/01/2015, 12:31
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Pregunta Ordenar una tabla utilizando una columna de otra tabla

Hola amigos estoy con una duda ¿, necesito hacer una consulta en mysql para que me ordene una tabla pero el order by debe ser según el valor de una columna que pertenece a otra tabla, mis tablas son las siguientes:

Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `PerfilActivo` (
  2.   `IdActivacion` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `IdPuesto` INT(11) NOT NULL,
  4.   `IdUsuario` INT(2) NOT NULL,
  5.   `Activo` INT(1) NOT NULL,
  6.   PRIMARY KEY (`IdActivacion`),
  7.   UNIQUE KEY `IdPuesto` (`IdPuesto`)
  8. )

La otra tabla es;
Código SQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `PerfilPuesto` (
  2.   `IdPuesto` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `NombreEmpresa` VARCHAR(100) NOT NULL,
  4.   `NIT` VARCHAR(20) NOT NULL,
  5.   `Direccion` VARCHAR(100) NOT NULL,
  6.   `GiroEmpresa` VARCHAR(100) NOT NULL,
  7.   `Telefonos` VARCHAR(100) NOT NULL,
  8.   `Email` VARCHAR(100) NOT NULL,
  9.   `NombreSolicitante` VARCHAR(100) NOT NULL,
  10.   `Puesto` VARCHAR(100) NOT NULL,
  11.   `Movil` VARCHAR(9) NOT NULL,
  12.   `NombrePuesto` VARCHAR(100) NOT NULL,
  13.   `Departamento` VARCHAR(100) NOT NULL,
  14.   `Cantidad` INT(11) NOT NULL,
  15.   `ActividadesRealizar` VARCHAR(1000) NOT NULL,
  16.   `EquipoUtilizar` VARCHAR(100) NOT NULL,
  17.   `ConocimientosRequeridos` VARCHAR(1000) NOT NULL,
  18.   `JornadaLaboral` VARCHAR(100) NOT NULL,
  19.   `PersonalCargo` VARCHAR(100) NOT NULL,
  20.   `Viaja` VARCHAR(100) NOT NULL,
  21.   `EquipoCargo` VARCHAR(100) NOT NULL,
  22.   `ValoresCargo` VARCHAR(100) NOT NULL,
  23.   `InfoConfidencial` VARCHAR(100) NOT NULL,
  24.   `EstudiosTerminados` VARCHAR(100) NOT NULL,
  25.   `Especializaciones` VARCHAR(500) NOT NULL,
  26.   `Vehiculo` VARCHAR(100) NOT NULL,
  27.   `Ingles` VARCHAR(15) NOT NULL,
  28.   `Informatica` VARCHAR(100) NOT NULL,
  29.   `OtrosConocimientos` VARCHAR(500) NOT NULL,
  30.   `RangoEdad` VARCHAR(100) NOT NULL,
  31.   `Genero` VARCHAR(20) NOT NULL,
  32.   `EstadoCivil` VARCHAR(20) NOT NULL,
  33.   `RequerimientosFisicos` VARCHAR(100) NOT NULL,
  34.   `LugarRecidencia` VARCHAR(100) NOT NULL,
  35.   `Otros` VARCHAR(500) NOT NULL,
  36.   `SueldoBase` VARCHAR(500) NOT NULL,
  37.   `PromMesual` VARCHAR(100) NOT NULL,
  38.   `BonificacionDecreto` VARCHAR(100) NOT NULL,
  39.   `OtrasBonificaciones` VARCHAR(100) NOT NULL,
  40.   `AguinaldoBono14` VARCHAR(100) NOT NULL,
  41.   `IGSS` VARCHAR(100) NOT NULL,
  42.   `Notas` VARCHAR(1000) NOT NULL,
  43.   `Confidencial` INT(1) NOT NULL,
  44.   `FechaCreacion` datetime NOT NULL,
  45.   PRIMARY KEY (`IdPuesto`)
  46. )

Lo que necesito en si es Ordenar la tabla PerfilPuesto pero con la columna Activo que pertenece a la tabla PerfilActivo, como se hace este tipo de consultas o no se puede, muchas gracias.
  #2 (permalink)  
Antiguo 26/01/2015, 12:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ordenar una tabla utilizando una columna de otra tabla

Se hacen con JOIN...

Es una consulta de manual. ¿Probaste algo, algun intento?
Estoy asumiendo que sabes lo que es 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)
  #3 (permalink)  
Antiguo 26/01/2015, 17:43
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Ordenar una tabla utilizando una columna de otra tabla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Se hacen con JOIN...

Es una consulta de manual. ¿Probaste algo, algun intento?
Estoy asumiendo que sabes lo que es JOIN.
La verdad no ya que no conocía JOIN, voy a ver ejemplos de estos muchas gracias.
  #4 (permalink)  
Antiguo 26/01/2015, 17:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Ordenar una tabla utilizando una columna de otra tabla

En tu caso es un JOIN simple con uso de ORDER BY:
Código SQL:
Ver original
  1. SELECT PP.*
  2. FROM PerfilPuesto PP INNER JOIN PerfilActivo A ON PP.IdPuesto = A.IdPuesto
  3. ORDER BY A.Activo;
De todos modos tienes algunos cuantos errores en la definicion de las columnas, el primero de los cuales es simplemente que ese "(1)" que pusiste al campo "Activo" es simple basura. Puede tener en realidad efectos nocivos.
Esos numeros entre paréntesis para los campos numéricos no sirven para indicar la cantidad de dígitos. Se usan para otra cosa, y es recomendable no usarlos, dejando que MySQL les asigne el valor que tienen por default.

Otros campos como estos:
Código MySQL:
Ver original
  1. `ActividadesRealizar` VARCHAR(1000) NOT NULL,
  2.   `EquipoUtilizar` VARCHAR(100) NOT NULL,
  3.   `ConocimientosRequeridos` VARCHAR(1000) NOT NULL,
  4.   `JornadaLaboral` VARCHAR(100) NOT NULL,
  5.   `PersonalCargo` VARCHAR(100) NOT NULL,
parecen indicar que vas a usarlos para guardar listas de identificadores, o de valores, lo que significaría algo peor. Ese tipo de colecciones están prohibidas en las bases de datos relacionales. Representan uno de los peores errores que se pueden cometer en el diseño de estructura de datos.

Estos otros:
Código MySQL:
Ver original
  1. `Ingles` VARCHAR(15) NOT NULL,
  2.   `Informatica` VARCHAR(100) NOT NULL,
  3.   `OtrosConocimientos` VARCHAR(500) NOT NULL,
implican que esa tabla está desnormalizada a lo grande. Ese tipo de datos no va en la misma tabla, sino en tablas dependientes (relaciones 1:N), con agregado de tablas fijas paramétricas.

Esto es peor:
Código MySQL:
Ver original
  1. `SueldoBase` VARCHAR(500) NOT NULL,
  2.   `PromMesual` VARCHAR(100) NOT NULL,
  3.   `BonificacionDecreto` VARCHAR(100) NOT NULL,
  4.   `OtrasBonificaciones` VARCHAR(100) NOT NULL,
  5.   `AguinaldoBono14` VARCHAR(100) NOT NULL,
Esos datos no pueden ser VARCHAR. Tienen que ser DECIMAL o INT UNSIGNED, pero nunca VARCHAR.
Los valores monetarios o cualquier tipo de dato de magnitudes deben ser numéricos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/01/2015 a las 17:53
  #5 (permalink)  
Antiguo 26/01/2015, 18:00
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 8 meses
Puntos: 2
Respuesta: Ordenar una tabla utilizando una columna de otra tabla

Muchas gracias por compartir tus conocimientos, la verdad soy nuevo en el manejo de datos, sobre todo tengo problemas a la hora de crear la nacionalización de la base de datos, lo que no entiendo bien en tu consulta que significa PP.*
  #6 (permalink)  
Antiguo 26/01/2015, 19: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: 17 años
Puntos: 2658
Respuesta: Ordenar una tabla utilizando una columna de otra tabla

Alias. Es un alias aplicado a la tabla.
Acostúmbrate porque es lo mas usual que vas a ver en este rubro.
__________________
¿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: consulta-mysql
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 10:47.