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

[SQL2005] Emision de Reporte

Estas en el tema de [SQL2005] Emision de Reporte en el foro de SQL Server en Foros del Web. Hola gente forera!! Recurro a ustedes porque realmente necesito ayuda :o necesito emitir un reporte, de la siguiente forma. tienen que salir todos los registros ...
  #1 (permalink)  
Antiguo 14/02/2012, 00:28
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Información [SQL2005] Emision de Reporte

Hola gente forera!!
Recurro a ustedes porque realmente necesito ayuda :o

necesito emitir un reporte, de la siguiente forma.
tienen que salir todos los registros de Horarios, campo hora y si algun turno tiene asignado un horario (osea un turno dado) tiene que salir el nombre del empleado y la patente. tiene que quedar de la siguiente manera.

CONSULTA
--------

ARCE MARCELO
12/12/2011
ELIGE AMBAS COSAS

HORA NOMBRE DEL CLIENTE PATENTE
08:00
08:30
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30 RODRIGUEZ NICOLAS CDE234
16:00
16:30
17:00 JORGE HERNANDEZ ABC123

uso sql2005, avisenme si hace falta la base!

estoy probando con

select H.hora, C.nombre, T.patente
from Turnos T, Horarios H, Clientes C
INNER JOIN Turnos ON T.cliente = C.cliente
LEFT OUTER JOIN Horarios ON H.hora = T.hora

o con .

select hora, nombre, patente
from turnos t, horarios h, clientes c
where h.hora (+) = t.hora
and t.cliente = c.cliente;

select hora, nombre, patente
from turnos t, horarios h, clientes c
LEFT JOIN horarios ON h.hora = t.hora
where t.cliente = c.cliente;

select hora, nombre, patente
from turnos , horarios , clientes
LEFT JOIN horarios ON horarios.hora = turnos.hora
where turnos.cliente = clientes.cliente;

pero me llena de errores de sintaxis

Alguna ayudita que me puedan facilitar??

Gracias, a pesar de que encontre varias cosas interesantes recorriendo el foro no logro solucionarlo ^_^
  #2 (permalink)  
Antiguo 14/02/2012, 14:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: [SQL2005] Emision de Reporte

¿Cuales son esos errores?, somos un foro de SQL Server, la adivinanza aun no se me da...
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 14/02/2012, 16:11
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: [SQL2005] Emision de Reporte

-------------- CONSULTA
select Horarios.hora, Clientes.nombre, Turnos.patente from Turnos, Horarios, Clientes where Horarios.hora =* Turnos.hora and Turnos.cliente = Clientes.cliente;

--------------------- MSJ DE ERROR
Mens. 4147, Nivel 15, Estado 1, Línea 4
La consulta utiliza operadores de combinación externa no ANSI ("*=" o "=*"). Para ejecutar esta consulta sin modificaciones, establezca el nivel de compatibilidad para la base de datos actual en 80 o en un valor inferior mediante el procedimiento almacenado sp_dbcmptlevel.
Se recomienda volver a escribir la consulta con operadores de combinación externa ANSI

-------------- CONSULTA
select Horarios.hora, Clientes.nombre, Turnos.patente from Turnos, Horarios, Clientes INNER JOIN Turnos ON Turnos.cliente = Clientes.cliente LEFT OUTER JOIN Horarios ON Horarios.hora = Turnos.hora

--------------------- MSJ DE ERROR
Mens. 1013, Nivel 16, Estado 1, Línea 1 Los objetos "Turnos" y "Turnos" en la cláusula FROM tienen los mismos nombres expuestos. Use nombres de correlación para distinguirlos.

-------------- CONSULTA
select Horarios.hora, Clientes.nombre, Turnos.patente from Turnos, Horarios, Clientes INNER JOIN Turnos ON Turnos.cliente = Clientes.cliente LEFT OUTER JOIN Horarios ON Horarios.hora = Turnos.hora

--------------------- MSJ DE ERROR
Mens. 4104, Nivel 16, Estado 1, Línea 1 El identificador formado por varias partes "T.cliente" no se pudo enlazar. Mens. 4104, Nivel 16, Estado 1, Línea 1 El identificador formado por varias partes "H.hora" no se pudo enlazar. Mens. 4104, Nivel 16, Estado 1, Línea 1 El identificador formado por varias partes "T.hora" no se pudo enlazar.

LUEGO PROBE CON ESTE--------------

select H.hora, C.nombre, T.patente from Turnos T, Horarios H, Clientes C INNER JOIN Turnos ON T.cliente = C.cliente LEFT OUTER JOIN Horarios ON H.hora = T.hora

y tampoco anduvo.
  #4 (permalink)  
Antiguo 15/02/2012, 13:43
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: [SQL2005] Emision de Reporte

Creo que TODOS los mensajes son sumamente explicitos

1.- No se aceptan estos signos ("*=" o "=*") en comparaciones para versiones 2005 y superior, ¿aun quieres seguirlas ocupando?, baja tu base a una version 2000

2.- Debes ocupar INNER JOIN para unir tus tablas y dejar de utilizar el codigo antiguo de unirlas mediante el WHERE.

3.- La estructura del JOIN es:

SELECT <campos> FROM tutabla INNER JOIN tuotratabla ON tutabla.campo = tuotratabla.campo
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 15/02/2012, 16:11
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Pregunta Respuesta: [SQL2005] Emision de Reporte

son 3 tablas y tiene que listar la tabla1 completa, en el caso de q se cumpla una condicion, agregar 2 campos mas de 2 tablas diferentes.
Lo malo es que si esa condicion no se cumple, tine que seguir imprimiendo ese registro, pero sin los otros 2 campos de esas otras 2 tablas.
  #6 (permalink)  
Antiguo 16/02/2012, 12:41
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: [SQL2005] Emision de Reporte

Haces un INNER JOIN entre tus tablas y en caso (CASE) de que se cumpla tu condicion, pones el valor de los otros campos, de lo contrario, o mandas un valor fijo o NULL
__________________
MCTS Isaias Islas

Etiquetas: registro, reporte, select, sql, 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 06:58.