Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: TwisteD420 en 1 Junio 2011, 01:44 am



Título: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 1 Junio 2011, 01:44 am
Como estan?

Veran quiero insertar esto:

Código:
insert into prestamos (id_prestamo, id_libro, id_sucursal, num_tarjeta, fecha_salida, fecha_devol)
(0003212, 000010, 2, '023244', '16/04/2009', '19/04/2009')

en esta tabla:
Código:
create table prestamos
(
id_prestamo int not null,
id_libro int not null,
num_tarjeta int not null,
fecha_salida datetime not null,
fecha_devol datetime not null,

constraint pk_prestamo primary key (id_prestamo),

constraint fk_prestamos_libro foreign key (id_libro)
references libros (id_libro) on delete cascade on update cascade,

constraint fk_prestamos_lector foreign key (num_tarjeta)
references lector (num_tarjeta) on delete cascade on update cascade
);

No se cual sera mi error, quizas sea en DATE TIME.

Gracias anticipadas.

Saludos!


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: Novlucker en 1 Junio 2011, 01:50 am
INSERT INTO Tabla (campo, campo, campo) VALUES (valor, valor, valor)

Saludos


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 1 Junio 2011, 01:51 am
LOL gracias, se me fue la onda en algo tan simple como poner VALUES

lol

gracias... saludos!


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 9 Junio 2011, 03:04 am
Buenas!

No queria abrir otro post y tengo un par de consultas, espero q alguien me pueda ayudar, la cosa es así, cree esta base de datos:

Código:
create table autos
(
marca varchar(25) not null,
modelo varchar(25) not null,
color varchar(15) not null,
matricula varchar(25) not null,
situacion varchar(15) not null,

constraint pk_auto primary key (matricula)
);

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('Lamborghini', 'Diablo 630', 'amarillo', 'ma-2663-bc', 'en renta')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('Ferrarri', 'F-40', 'Rojo', 'ma-8870-bc', 'en taller')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('pontiac', 'trans-am', 'negro', 'vd-870-gth', 'disponble')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('austin m.', 's340', 'marron', 'ml-7890-b', 'en renta')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('jaguar', 'destructor', 'verde', 'knight', 'en renta')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('sbarroR', 'decade', 'blanco', 'ca-5647-ab', 'disponible')

insert into autos (marca, modelo, color, matricula, situacion) VALUES
('de tamaso', 'pantera', 'blanco', 'ad-768-tty', 'disponible')


create table clientes
(
apellidos varchar(35) not null,
nombre varchar(15) not null,
dui char(10) not null,
edad int not null,

constraint pk_clientes primary key (dui)
);

insert into clientes (apellidos, nombre, dui, edad) VALUES
('gonzales aranda', 'javier', '758369-1', 27)


insert into clientes (apellidos, nombre, dui, edad) VALUES
('beato apostol', 'antonio', '28836746-1', 43)

insert into clientes (apellidos, nombre, dui, edad) VALUES
('campos ortega', 'adriano', '82665358-6', 36)

insert into clientes (apellidos, nombre, dui, edad) VALUES
('ruiz rojo', 'juan', '83667228-5', 35)

create table rentas
(
matricula varchar(25) not null,
dui char(10) not null,
fecha datetime not null,

constraint fk_rentas_clientes foreign key (dui)
references clientes (dui) on delete cascade on update cascade,

constraint fk_rentas_autos foreign key (matricula)
references autos (matricula) on delete cascade on update cascade
);


insert into rentas (matricula, dui, fecha) values
('MA-2663-BC', '758369-1', 21/02/2001)

insert into rentas (matricula, dui, fecha) values
('ML-7890-B', '83667228-5', 21/02/2001)

insert into rentas (matricula, dui, fecha) values
('AD-768-TTY', '758369-1', 10/11/2001)

insert into rentas (matricula, dui, fecha) values
('AD-768-TTY', '82665358-6', 02/03/2002)

insert into rentas (matricula, dui, fecha) values
('MA-2663-BC', '28836746-1', 15/04/2002)

insert into rentas (matricula, dui, fecha) values
('KNIGHT', '83667228-5', 26/04/2002)

insert into rentas (matricula, dui, fecha) values
('ML-7890-B', '83667228-5', 29/04/2002)

 

Muy bien, necesitaba hacer varias consultas, subconsultas y modificaciones que ya las hice, pero me quedan 2 consultas por hacer que no logro que funcionen.

tengo que:
seleccionar nombre, apellidos y edad del cliente, marca, modelo y matricula de los autos rentados en la fecha 21/02/2001 


lo intento hacer algo asi pero no logro que funcione:

Código:
--seleccionar nombre apellido y edad del cliente, marca, modelo, y matricula de los autos rentados el 21/02/2001
select nombre, apellidos, edad
from clientes
where
(select dui
from rentas
where fecha = '21/02/2001')

ayuda? gracias :)


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: Nakp en 9 Junio 2011, 06:50 am
deberias trabajar con una forma mas estandar de fechas como YYYY-MM-DD

segundo... haces un where sin una condicion no?

select campo from tabla where campo_relaciona in (select campos from tabla where condicion)

pd: de donde eres? usan dui? x'D


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 12 Junio 2011, 03:37 am
Muchas gracias por tu respuesta!

Ahora tengo otra duda, me dejaron un trabajo de realizar unas cuantas subconsultas, y estoy teniendo problemas en estos literales:

Código:
--2) Cual es el total de los pedidos tomados por Bill Adams:

(SELECT id_prod, cantidad
FROM detalle_pedido
WHERE num_orden IN
(SELECT num_orden
FROM pedido
WHERE id_resp=1001))

Eso es todo lo que tengo hasta ahorita, de ahi no se como seguir.

Ahi ya tengo la lista de productos y la cantidad, pero no se como realizar la suma de estos!!!

tengo estas tablas:

(http://img88.imageshack.us/img88/6671/trabajo1a.jpg)

(http://img97.imageshack.us/img97/7295/trabajo1k.jpg)




Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: Novlucker en 12 Junio 2011, 05:56 am
http://msdn.microsoft.com/en-us/library/ms187810.aspx

Saludos


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 12 Junio 2011, 06:02 am
http://msdn.microsoft.com/en-us/library/ms187810.aspx

Saludos

Gracias por tu respuesta, pero el problema que tengo es que, el comando que puse me devuelve el ID del producto y la cantidad que vendio de este...

me falta seleccionar el precio de venta del producto, multiplicarlo por el numero de veces q lo vendio y de ahi realizar la suma.

Eso es lo que no se como hacerlo  :(

No se si me doy a entender!


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: Novlucker en 12 Junio 2011, 17:03 pm
Eso lo arreglas con un INNER JOIN entre la tabla de PRODUCTOS y la de DETALLE DE PEDIDO

Saludos


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 14 Junio 2011, 03:21 am
Gracias por tu ayuda!

Logré resolvero así:

Código:
--2- Cual es el total de los pedidos tomados por Bill Adams
select sum (detalle_pedido.cantidad * productos.precio_venta) from detalle_pedido
inner join productos on detalle_pedido.id_prod = productos.id_producto where id_producto IN
(select id_prod
from detalle_pedido
where num_orden
IN (select num_orden from pedido where id_resp = '1001'))

Gracias  ::)


Título: Re: SQL Express 2005 syntax error... AYUDA!
Publicado por: TwisteD420 en 15 Junio 2011, 03:41 am
Como estan? verán estoy teniendo complicaciones con algo que estoy tratando de hacer...

Código:
-- de todos los lectores que han prestado mas de dos libros, obtenga sus nombres, direcciones y el numero total de libros prestados hasta la fecha

select lector.nombre_lector, lector.ciudad_lector, count (prestamos.NUM_tarjeta) as NumTotalL from lector inner join prestamos
on lector.NUM_tarjeta = prestamos.NUM_tarjeta
group by ciudad_lector, nombre_lector
where num_tarjeta IN (select count (NUM_tarjeta)
from prestamos group by (num_tarjeta) having count (NUM_tarjeta) > 2)

veran si los selecciono por aparte:

Código:
select lector.nombre_lector, lector.ciudad_lector, count (prestamos.NUM_tarjeta) as NumTotalL from lector inner join prestamos
on lector.NUM_tarjeta = prestamos.NUM_tarjeta
group by ciudad_lector, nombre_lector

Código:
select count (NUM_tarjeta)
from prestamos group by (num_tarjeta) having count (NUM_tarjeta) > 2

si me muestra los datos, supongo que el error esta en el nexo (no se como se llama con exactitud, xD pero el q utilizamos para comparar los datos)


Gracias anticipadas!

EDIT:

Código:
select lector.nombre_lector, lector.ciudad_lector, count (prestamos.NUM_tarjeta) as NumTotalL from lector inner join prestamos
on lector.NUM_tarjeta = prestamos.NUM_tarjeta
where prestamos.NUM_tarjeta in (select (prestamos.NUM_tarjeta)
from prestamos group by (prestamos.num_tarjeta) having count (prestamos.NUM_tarjeta) > 2)
group by lector.nombre_lector, lector.ciudad_lector

Ya logre hacerlo :)