You are on page 1of 7

GUIA_2

CREATE DATABASE BD_XML



GO

USE BD_XML
GO

-- CREATE TABLAS
--tabla cliente
CREATE TABLE cliente(
id_cliente int not null primary key,
nombres varchar(20),
)

CREATE TABLE venta(
id_venta int not null primary key,
fecha datetime,
id_cliente int not null foreign key references cliente(id_cliente),
)

CREATE TABLE detalle_venta(
id_detalle int not null primary key,
producto varchar(20),
cantidad int,
precio smallmoney,
id_venta int not null foreign key references venta(id_venta),
)

--Insertando datos a tablas
--Tabla cliente
INSERT INTO cliente values (1,'Hernan Nina');
INSERT INTO cliente values (2,'Willian Zamalloa');
--Tabla Venta
INSERT INTO venta values(1,GETDATE(),1);
INSERT INTO venta values(2,GETDATE(),1);
INSERT INTO venta values(3,GETDATE(),1);
INSERT INTO venta values(4,GETDATE(),2);
--Tabla Detalle_venta
INSERT INTO detalle_venta values(1,'p1',5,5,1);
INSERT INTO detalle_venta values(2,'p2',12,5,1);
INSERT INTO detalle_venta values(3,'p3',7,5,1);
INSERT INTO detalle_venta values(4,'p1',4,5,2);
INSERT INTO detalle_venta values(5,'p2',3,5,2);
INSERT INTO detalle_venta values(6,'p1',2,5,3);
INSERT INTO detalle_venta values(7,'p2',10,5,3);
INSERT INTO detalle_venta values(8,'p1',12,5,4);
INSERT INTO detalle_venta values(9,'p2',1,5,4);
INSERT INTO detalle_venta values(10,'p3',3,5,4);

SELECT *FROM cliente;
SELECT *FROM venta;
SELECT *FROM detalle_venta;


--/*Modo Raw: cada fila de la consulta es un elemnto XML
SELECT id_cliente,nombres
FROM cliente
FOR XML RAW

--1)Mostrar la relacion de nombres de los productos que haya adquirido el cliente
con codigo 2
SELECT producto
FROM venta V inner join detalle_venta DV
ON V.id_venta = DV.id_venta
WHERE V.id_cliente = 2
FOR XML RAW

--Modo RAR, ELEMENTS:cada elemento de la columna de la consulta es un elemento XML
SELECT id_cliente,nombres
FROM cliente
FOR XML RAW, ELEMENTS





/*4.- FOR XML AUTO*/
--Modo AUTO: Identico a RAW para una sola tabla
SELECT id_cliente,nombres
FROM cliente
FOR XML AUTO

--mODO AUTO: Crea elementos XML anidados cuando hay un JOIN
SELECT v.id_venta,v.fecha,d.id_detalle,d.producto,d.cantidad,d.precio
FROM venta v inner join detalle_venta d
ON v.id_venta = d.id_venta
FOR XML AUTO

--mODO AUTO: Crea elementos XML anidados cuando hay un JOIN
SELECT v.id_venta,v.fecha,d.id_detalle,d.producto,d.cantidad,d.precio
FROM venta v inner join detalle_venta d
ON v.id_venta = d.id_venta
FOR XML AUTO







--PROPUETO2
SELECT C.id_cliente,C.nombres,V.id_venta,V.fecha
FROM cliente C inner join venta V
ON C.id_cliente = v.id_cliente
FOR XML AUTO



--3)Mostrar el nombre del cliente, fecha en la que realizo la compra,
--el nombre del producto, cantidad y precio que haya adquirido el
--cliente con codigo1, utilizar el modo XML auto

SELECT c.nombres,v.fecha,dv.producto,dv.cantidad,dv.precio
FROM detalle_venta dv , cliente c inner join venta v
ON c.id_cliente = v.id_cliente
where c.id_cliente ='1' and v.id_venta = dv.id_venta
FOR XML AUTO

--5.- FOR XML EXPLICIT
/*mODO EXPLICIT: define el XML a*/
-- traves de una tabla universal
select 1 as tag, null as parent,
v.id_venta [venta!1!IdVenta],
v.fecha [venta!1!Fecha!Element]
from venta v
FOR XML EXPLICIT

--4 construir la consulta adecuada que me muestre la siguiente estructura
-- utilizando el modo XML EXPLICIT
select 1 as tag, null as parent,
v.id_venta [venta!1!IdVenta],
v.fecha [venta!1!Fecha!Element],
v.id_cliente [venta!1!IdCliente!Element]
from venta v
FOR XML EXPLICIT


--6.- Configuracion de columnas en FOR XML XPATH
/*Modo PATH: Define el formato XML a traves de XPATH*/
select id_venta "@IDVenta", fecha "Categoria/fecha_ingreso"
from venta
FOR XML PATH('venta')
go

select id_cliente "Datos/@dni", nombres "Datos/nombre"
from cliente
FOR XML PATH ('cliente')
go

/*Modo PATH:Define el formato XML dentro de un elemento*/
select v.id_cliente "@IDVenta", v.fecha "Categoria/Fecha_ingreso"
from venta v
FOR XML PATH('Tienda'), root('FACTURAS')

You might also like