Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Ayuda con consultas sql.
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Ayuda con consultas sql.

Publicar nuevo tema Responder al tema
Foros de discusión » MySQL Server, MySQL Client, motor de bd gratuito   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
seloal
Usuario


Registrado: Jun 14, 2015
Mensajes: 1

Asunto: Ayuda con consultas sql. Responder citando

Hola a todo el mundo.

Vereis suspendí un examen con una serie de consultas y ahora para volverlo a hacer necesito las soluciones para tomarlas de ejemplo y estudiar.

Si alguien me quiere ayudar, dar pistas o enlazar a tutoriales se lo agradeceré mucho porque es un temario que se me da especialmente mal.


Esta es la tabla:



Estos son los create table
Código:
create table Ref_Vehicle_Manufactures
(
manufacturer_code Char(6),
manufacturer_name Varchar2(30),
primary key (manufacturer_code)
);


create table Ref_Vehicle_Types
(
vehicle_type_code Char(6),
vehicle_type_description Varchar2(30),
primary key (vehicle_type_code)
);


create table Ref_PCN_Ticket_Types
(
pcn_type_code Char(6),
pcn_type_description Varchar2(30),
primary key (pcn_type_code)
);


create table Ref_Event_Types
(
event_type_code Char(6),
event_type_description Varchar2(30),
primary key (event_type_code)
);


create table Ref_PCN_Ticket_Status
(
ticket_status_code Char(6),
ticket_status_description Varchar2(30),
primary key (ticket_status_code)
);


create table Addresses
(
address_id Char(6),
line_1_number_building Char(6),
line_2_number_street Char(6),
line_3_number_area_l_s Varchar2(6),
line_4_other Char(6),
town_city Varchar2(30),
zip_postcode char(5),
state_province_country Varchar2(30),
country Varchar2(30),
other_address_details Varchar2(30),
primary key (address_id)
);


create table Officers
(
officer_badge_number Char(6),
officer_address_id Char(6),
gender Varchar2(10),
date_of_birth Date,
officer_first_name Varchar2(30),
officer_middle_name Varchar2(30),
officer_last_name Varchar2(30),
officer_other_details Varchar2(30),
primary key (officer_badge_number),
foreign key (officer_address_id)
REFERENCES Addresses (address_id)
);


create table Customers
(
customer_id Char(6),
address_id Char(6),
first_name Varchar2(30),
middle_name Varchar2(30),
last_name Varchar2(30),
home_phone Char(9),
email_address Varchar2(60),
cell_mobile_phone Char(9),
other_details Varchar2(30),
primary key (customer_id),
foreign key (address_id)
REFERENCES Addresses (address_id)
);


create table Vehicles
(
vehicle_license_number Char(6),
manufacturer_code Char(6),
vehicle_type_code Char(6),
year_of_manufacture Char(4),
vehicle_details Varchar2(30),
model Varchar2(30),
primary key (vehicle_license_number),
foreign key (manufacturer_code)
REFERENCES Ref_Vehicle_Manufactures (manufacturer_code),
foreign key (vehicle_type_code)
REFERENCES Ref_Vehicle_Types (vehicle_type_code)
);


create table PCN_Parking_Tickets
(
pcn_ticket_id Char(6),
customer_id Char(6) unique,
issued_by_officer_badge_number Char(6),
tiket_status_code Char(6),
tiket_type_code Char(6),
vehicle_licence_number Char(6),
date_ticket_issued Date,
date_ticket_cancelled Date,
date_ticket_paid Date,
other_details Varchar2(30),
primary key (pcn_ticket_id),
foreign key(customer_id)
REFERENCES Customers (customer_id),
foreign key(issued_by_officer_badge_number)
REFERENCES Officers (officer_badge_number),
foreign key(tiket_status_code)
REFERENCES Ref_PCN_Ticket_Status (ticket_status_code),
foreign key(tiket_type_code)
REFERENCES Ref_PCN_Ticket_Types (pcn_type_code),
foreign key(vehicle_licence_number)
REFERENCES Vehicles
);


create table Events
(
event_id Char(6),
event_type_code Char(6),
pcn_ticket_id Char(6),
date_of_event DATE,
other_details Varchar2(30),
primary key (event_id),
foreign key (event_type_code)
REFERENCES Ref_Event_Types (event_type_code),
foreign key (pcn_ticket_id)
REFERENCES PCN_Parking_Tickets (pcn_ticket_id)
);



Y estos son los enunciados de las consultas con el codigo que tengo:

A. Es necesario mostrar el numero de tickets que hay en cada estado (ticket_status_code) juntamente con el código de ese estado, siempre y cuando el ticket este expedido por un citroen (manufacturer_name) de categoría económica (vehicle_type_description). Si algún estado no tiene ningún ticket no se debe mostrar por pantalla.

(Esta creo que la tengo mas o menos bien)
Código:
SELECT SUM (tiket_status_code), tiket_status_code
FROM PCN_Parking_Tickets a INNER JOIN Vehicles b
ON a.vehicle_licence_number = b.vehicle_license_number
INNER JOIN Ref_Vehicle_Manufactures c ON b.manufacturer_code = c.manufacturer_code
INNER JOIN Ref_Vehicle_Types d ON d.vehicle_type_code = b.vehicle_type_code
WHERE c.manufacturer_name = 'Citroen' AND d.vehicle_type_description = 'economica'
GROUP BY tiket_status_code;



B. Se ha descubierto que el sistema ha sacado algunos tickets por error debido al hecho que un vez solicitado el pago se ha generado un evento 'Crear Pago' (Make Payment) pero la fecha del ticket se ha grabado en el campo de fecha del campo cancelado (date_ticket_cancelled) i la barrera se a levantado como si el pago se hubiese realizado correctamente. Se quiere el nombre i el apellido del cliente, así como el telefono de su casa i el identificador del ticket (pcn_ticket_id). Es necesario tener en cuenta que los campos de fecha que no pertocan para un ticket determinado se formatean con un NULL.

(En esta la primera parte del enunciado me pierde totalmente, no le hagais mucho caso si no lo entendeis y prestad mas atencion a las otras)
Código:
SELECT c.first_name, c.middle_name, c.last_name, c.home_phone, p.pcn_ticket_id
FROM Customers c LEFT JOIN PCN_Parking_Tickets p
on c.customer_id = p.customer_id;


C. En el momento en el que el sistema detecta que alguien quiere hacer el pago del ticket de parking genera un evento, y por tanto un proceso llamado ‘Crear pago’ (Make Payment). Dar por pantalla el numero de procesos de este estilo iniciado por el sistema por población (‘town_city’) conjuntamente con el nombre de esta población.

(Esta me tiene perdido no tengo ni idea de como plantearla)

D. Se requiere mostrar por pantalla el nombre y apellidos de los clientes que no son ‘Cleveland’ i que se les ha generado un ticket correcto (‘ticket_status_description’) una vez ha querido pagarlo, es decir, que no se le ha cancelado ni a salido erróneo, Es necesario tener en cuenta que hace falta comprobar no solo el estado, si no también las fechas de la tabla PCN_Parking_Tickets (si son nulas o no, no deberían serlo, en ese caso no ha de aparecer en pantalla), se valorara hacerlo con MINUS.

(Esta creo que esta bien)
Código:
SELECT a.first_name, a.middle_name, a.last_name
FROM Customers a
INNER JOIN PCN_Parking_Tickets b ON a.customer_id = b.customer_id
INNER JOIN Addresses c ON c.address_id = a.address_id
INNER JOIN Ref_PCN_Ticket_Status d ON d.ticket_status_code = b.tiket_status_code
WHERE c.address_id != 'Cleveland'
AND d.ticket_status_description = 'Correcto'
AND b.date_ticket_cancelled IS NOT NULL AND b.date_ticket_issued IS NOT NULL AND b.date_ticket_paid IS NOT NULL;


E. Queremos saber todos los datos de clientes (relaciones ‘Customers’, ‘Addresses’, y ‘Officers’) de los clientes por los cuales se ha generado algún tique erróneo y que han cancelado alguna vez una operación a partir de la implantación de las nuevas tarifas el 1 de enero de 2015.


(Esta me da un error de ora-00904 invalid identifier que probablemente sea muy ridiculo de arreglar pero yo no lo consigo)
Código:
SELECT c.*
FROM Customers c
INNER JOIN PCN_Parking_Tickets p ON c.customer_id = p.customer_id
INNER JOIN Ref_PCN_Ticket_Status d ON d.ticket_status_code = b.tiket_status_code
WHERE p.date_ticket_cancelled > '01-JAN-2015'
AND d.ticket_status_description = 'Erroneo';


Muchas gracias por vuestro tiempo y atención!
P.D. Utilizo ORACLE express y los datos dentro de las tablas son de libre interpretación.[/code]
MensajePublicado:
Dom Jun 14, 2015 8:14 am
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » MySQL Server, MySQL Client, motor de bd gratuito  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A