PDA

Ver la Versión Completa : Uso de Instruccion AS para crear campo en SQL


mike_1979
21-08-2008, 20:39:11
Hola a todos, estoy por acá de nuevo con una consulta para Uds. necesito poder asignar como nombre de un campo de resultado de un consulta el el contenido de un registro, intenté usando el comando "as" + el nombre del campo q contiene el registro pero me escribe el nombre del campo, no su contenido. Espero q puedan ayudarme. Este es el codigo q uso:

[select alumno.alumno_apellido, alumno.alumno_nombre,
(select infxmateria.ixm_nota from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and
ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1) as materia.materia_descripcion
from alumno join alumxcurso on (alumno.alumno_idalumno = alumxcurso.axc_idalumno)where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo = 2008 order by alumno.alumno_apellido]

el resultado es:
apellido nombre materia.materia_descripcion
perez juan 8.50

yo necesito q en lugar de ponerme el nombre del campo me ponga por ejemplo matematica1

Caral
21-08-2008, 20:41:04
select alumno.alumno_apellido, alumno.alumno_nombre,

(select infxmateria.ixm_nota from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1) as materia.materia_descripcion

from alumno join alumxcurso on (alumno.alumno_idalumno =
alumxcurso.axc_idalumno)where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo =
2008 order by alumno.alumno_apellido

Caral
21-08-2008, 20:50:12
Hola
La verdad no lo entiendo bien, tal vez asi:

select alumno.alumno_apellido, alumno.alumno_nombre,
(select infxmateria.ixm_nota from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and
ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1) as matematica1
from alumno join alumxcurso on (alumno.alumno_idalumno = alumxcurso.axc_idalumno)where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo = 2008 order by alumno.alumno_apellido
Saludos

mike_1979
21-08-2008, 20:58:29
Hola Caral, gracias por responderme, aparentemetne no me expliqué bien, lo que necesito es lo siguiente: yo recorro la tabla materia para ir chequeando las notas de cada materia por cada alumno asi obtengo el apellido del alumno, su nombre y la nota q tiene en uan determinada materia, yo no se como se llama esa materia, lo q necesito es q bajo el nombre de esa materia se coloquen las notas

Apellido-----Nombre-----nombre de materia------nombre de otra materia

perez------- juan ------------ 8-------------------- 8


despues de consultar las notas en infxmateria necesito dar el nombre a esa columna con el nombre de la materia la cual no conozco por eso quiero ponerla con "as" pero no me funciona poniendo "as materia.materia_descripcion"

eduarcol
21-08-2008, 21:03:36
Hola Caral, gracias por responderme, aparentemetne no me expliqué bien, lo que necesito es lo siguiente: yo recorro la tabla materia para ir chequeando las notas de cada materia por cada alumno asi obtengo el apellido del alumno, su nombre y la nota q tiene en uan determinada materia, yo no se como se llama esa materia, lo q necesito es q bajo el nombre de esa materia se coloquen las notas

Apellido-----Nombre-----nombre de materia------nombre de otra materia

perez------- juan ------------ 8-------------------- 8


despues de consultar las notas en infxmateria necesito dar el nombre a esa columna con el nombre de la materia la cual no conozco por eso quiero ponerla con "as" pero no me funciona poniendo "as materia.materia_descripcion"

y porq haces la seleccion del campo como si viniera de la tabla de materias, quizas con esto si sirva:

select alumno.alumno_apellido, alumno.alumno_nombre,
(select infxmateria.ixm_nota from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and
ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1) as materia
from alumno join alumxcurso on (alumno.alumno_idalumno = alumxcurso.axc_idalumno)where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo = 2008 order by alumno.alumno_apellido

egostar
21-08-2008, 21:05:35
Lo que yo entiendo es que el valor de la columna materia lo quiere colocar como título, con el 'AS' estás colocando un nombre a la columna pero no el valor de la columna.

Salud OS

Caral
21-08-2008, 21:06:34
Hola
No estoy seguro, tal vez asi:

select alumno.alumno_apellido, alumno.alumno_nombre,
(select infxmateria.ixm_nota as [materia.materia_descripcion]
from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and
ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1)
from alumno join alumxcurso on (alumno.alumno_idalumno = alumxcurso.axc_idalumno)where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo = 2008 order by alumno.alumno_apellido
No encuentro en el select donde mencionar al nombre de la materia.
Saludos

Caral
21-08-2008, 21:11:30
Hola
Segun lo que veo tiene una tabla que se llama Materia pero no esta en el select, por eso es que me parece que no aparece como tal.
No se.
Saludos

mike_1979
21-08-2008, 21:11:40
Hola Eduarcol, de esa manera es como obtengo el idmateria para ubicarla en la tabla de movimiento (infxmateria) todo eso funciona bien mi unico problema es lograr mediante "as" dar como nombre de columna el contenido de un campo o sea;
select
(select nota from infxmateria where idmateria = materia.materia_idmateria) as .........
where alumno en tal o cual curso

hasta alli todo ok pero luego del "as" no se q poner para q me ponga el contenido del campo descripcion de la tabla materia (q seria el nombre de la materia correspondiente al idmateria q ya usé)

mike_1979
21-08-2008, 21:17:52
No CAral, ya lo porbé con corchetes y lo que pone como titulo de la columna es lo q ponés entre corchetes no el contenido de ese campo

Caral
21-08-2008, 21:28:20
Hola
Veamos lo que hay:
tablas: alumno, nfxmateria, materia.

select alumno.alumno_apellido, alumno.alumno_nombre,
(select infxmateria.ixm_nota, materia.materia_descripcion from infxmateria where infxmateria.ixm_idmateria = 1 and ixm_idciclolectivo = 2008 and
ixm_idalumno = alumno.alumno_idalumno and ixm_idinforme = 1)
from alumno join alumxcurso on (alumno.alumno_idalumno = alumxcurso.axc_idalumno) innerJoin infxmateria.ixm_idmateria = materia.materia_idmateria where alumxcurso.axc_idcurso = 1 and alumxcurso.axc_iddivision = 'A' and alumxcurso.axc_idciclolectivo = 2008 order by alumno.alumno_apellido

DBgrid1.Colums[3].Title:= AdoQuery1.filebyname('materia_descripcion').Value;
Lo mas seguro es que no sepa por donde va, pero solo trato de darte ideas.:)
Saludos

mike_1979
21-08-2008, 21:33:34
Muchas Gracias Caral y a todos, pero al final parece que no se puede dar nombre a una columna con "as" poniendo el contenido de un campo, al parecer le instruccion as solo da como combre strings o sea cadena de caracteres

Caral
21-08-2008, 21:39:18
Hola
Todo tiene solucion, espera por ahi debe estar Roman, el te ayudara.
Saludos

mike_1979
21-08-2008, 21:42:29
Ok, Caral Muchas gracias.

eduarcol
21-08-2008, 21:55:56
Hola
Todo tiene solucion, espera por ahi debe estar Roman, el te ayudara.
Saludos

jajajaja te pasas

La forma en que yo lo solucione es relanzando una segunda consulta al momento de mostrar los titulos...

Caral
21-08-2008, 21:59:18
Hola
Vamos hombre, que le estoy dejando algo a Roman, no ves que casi no tiene post.:D:D
Ademas, si alguien sabe de esto (que yo sepa ) es el.:)
Saludos