Foros del Web » Programando para Internet » PHP »

presentar campo de un alias en mysql

Estas en el tema de presentar campo de un alias en mysql en el foro de PHP en Foros del Web. Saludos, Disculpen necesito de su ayuda si es posible, tengo una consulta a un tabla con alias pero no secpomo presentar el campo este es ...
  #1 (permalink)  
Antiguo 03/02/2009, 17:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 11 meses
Puntos: 1
presentar campo de un alias en mysql

Saludos,

Disculpen necesito de su ayuda si es posible, tengo una consulta a un tabla con alias pero no secpomo presentar el campo este es el codigo:

SELECT * FROM adm_programas,adm_conductores,adm_medios,adm_tipo_ programa,adm_conductores_programas,adm_dias,adm_ho rarios as x,adm_horarios as y,adm_programas_detalles WHERE dia_codigo='".$dia."' AND prog_deta_dia=dia_codigo AND prog_deta_hora_inicio=x.hor_codigo AND prog_deta_hora_fin=y.hor_codigo AND prog_deta_programa=prog_codigo AND prog_codigo=cond_prog_programa AND cond_prog_conductor=cond_codigo AND prog_tipo_programa=tipo_prog_codigo AND prog_medio=med_codigo AND prog_status='A'

y deseo presentar hor_nombre lo hago ais:

$erow['x.hor_codigo']; pero no muestra nada

de antemano muchas gracias
  #2 (permalink)  
Antiguo 03/02/2009, 18:36
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: presentar campo de un alias en mysql

Hola,

Eso va a depender completamente del DMBS. Como no hubo especificación de campos MySQL les va a dar el nombre que mejor le parezca si fueran a estar en varias tablas (y por consiguiente duplicados en el join).

En el mejor de los casos deberías de especificar cada campo que vas a necesitar y no todos, pero podrías escribirlo así ...

Código:
SELECT
	*,
	x.hor_codigo ValorQueQuieroUsar
FROM
Y recuperarlo como:

$erow['ValorQueQuieroUsar'];

Saludos,
  #3 (permalink)  
Antiguo 03/02/2009, 19:30
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: presentar campo de un alias en mysql

Saludos,

Gracias HackmanC por tu aporte fue de mucha ayuda solo una consulta adicional como hago si deseo mostrar todos los conductores de programas, es decir utilizando el mismo script me muestra todos los conductores de los programas programa pero deseo agruparlos en 1 campo para mostrarlos como haria eso????
  #4 (permalink)  
Antiguo 03/02/2009, 20:38
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: presentar campo de un alias en mysql

Hola,

Esa es una pregunta específica sobre MySQL, ya no de PHP.
Y sería mejor que lo consultaras en el área de base de datos.

La situación es que es difícil 'adivinar' la estructura de la base de datos y lo más probable es que tengas que explicar mas detalladamente la duda que es sobre SQL.

Saludos,
  #5 (permalink)  
Antiguo 03/02/2009, 22:10
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: presentar campo de un alias en mysql

Saludos,
la estructura seria asi

*****Tabla programa
prog_codigo
prog_nombre

*****Tabla conductores
cond_codigo
cond_detalle

*****Tabla conductores_programas
cond_prog_programa (se almacena la clave de la tabla programa)
cond_prog_conductor (se almacena la clave de la tabla conductores)

*****Tabla dias
dia_codigo
dia_nombre

*****Tabla horarios
hor_codigo
hor_nombre

*****Tabla Programas_Detalles
prog_deta_programa (se almacena la clave de la tabla programa)
prog_deta_dia (se almacena la clave de la tabla dias)
porg_deta_hora_inicio (se almacena la clave de la tabla horarios)
prog_deta_hora_fin (se almacena la clave de la tabla horarios)

ahora el problema me surge cuando deseo crear una consulta q me permita mostrar todos dias q el programa se emite pero en una sola columna es decir:

Programa1:Lunes-Martes-Miercoles-Sabado-Domingo
  #6 (permalink)  
Antiguo 03/02/2009, 23:37
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: presentar campo de un alias en mysql

Hola,

Ese tipo de resultados se llaman Referencias Cruzadas o Pivot. Pero MySQL todavía no tiene soporte para eso; así que lo normal es hacer la consulta ordenada por programa y desde PHP buscar y unir los días en un String.

Saludos,
  #7 (permalink)  
Antiguo 03/02/2009, 23:43
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: presentar campo de un alias en mysql

Hola,

Aunque posiblemente podrías probar algo así:

Código:
select
	adm_programas.prog_codigo prog_codigo,
	sum(if(adm_dias.dia_codigo = 0, 1, 0)) Lunes,
	sum(if(adm_dias.dia_codigo = 1, 1, 0)) Martes,
	sum(if(adm_dias.dia_codigo = 2, 1, 0)) Miercoles,
	.....
from
	adm_programas,
	adm_conductores,
	.....
where
	dia_codigo = Param1 and
	prog_deta_dia = dia_codigo and
	.....
group by adm_programas.prog_codigo  
Tiene el inconveniente de tener que modificar los códigos de los días si cambian en la tabla maestra.
Funciona si los programas solamente se transmiten 1 vez al día cada día.
En el campo Lunes vas a tener 1 si se transmite o 0 si no se transmite ese día.
Desde PHP tendrías que verificar y unir ...

Código:
$a = ($rs['Lunes'] == 1 ? 'Lunes'  : '');
$b = ($rs['Martes'] == 1 ? 'Martes' : '');
.....
$res = $a . $b ...
Saludos,

ps:

Si los demás campos no te van a servir, solamente usa las tablas:
-- adm_programas
-- adm_programas_detalles
-- adm_dias
De esa forma se simplificaría la consulta.
  #8 (permalink)  
Antiguo 04/02/2009, 14:57
 
Fecha de Ingreso: diciembre-2007
Mensajes: 218
Antigüedad: 16 años, 11 meses
Puntos: 1
Respuesta: presentar campo de un alias en mysql

Saludos,

Ok muchas gracias una vez mas por su aporte me sirvio un mundo, gracias.
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 14:11.