From c33addbaa7d996d93d107678df349c1aeefc06eb Mon Sep 17 00:00:00 2001 From: JuliaKovalchook Date: Mon, 16 Apr 2018 15:10:33 +0300 Subject: [PATCH 1/3] Update laboratory3.sql --- km62/Kovalchuk_Yuliia/laboratory3.sql | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/km62/Kovalchuk_Yuliia/laboratory3.sql b/km62/Kovalchuk_Yuliia/laboratory3.sql index aedc80ab..358675d0 100644 --- a/km62/Kovalchuk_Yuliia/laboratory3.sql +++ b/km62/Kovalchuk_Yuliia/laboratory3.sql @@ -1,2 +1,71 @@ -- LABORATORY WORK 3 -- BY Kovalchuk_Yuliia +/*1. Написати PL/SQL код, що по вказаному ключу замовника додає йому замовлення з номерами 1,....n, +щоб сумарна кількість його замовлень була 10. Дати нових замовлень дорівнюють даті останього замовлення. +Операція виконується, якщо у замовника є хоча б одне замовлення. 10 балів*/ + + declare + orderitems.order_id.TYPe +orderitems.order_nam varchar2(20) Not Null +VENDORS.VEND_ID varchar2(20) +BEGIN +customers.cust_id = "1000000001" +If orderitems.order_nam>1 +then +fOR 1... +end if; +Where Count(orderitems.order_nam)=10 + + +a +END; + + +/*2. Написати PL/SQL код, що по вказаному ключу замовника виводить у консоль його ім'я та изначає його статус. +Якщо він має 0 замовлень - статус = "poor" +Якщо він має до 2 замовлень включно - статус = "common" +Якщо він має більше 2 замовлень - статус = "rich" 4 бали*/ + declare + customer.cust_name CHAR(10) nOT NULL +vENDORS.VEND_ID CHAR(10) nOT NULL + +BEGIN +customers.cust_id = "1000000001" + +Loop +IF cAUNT(VENDORS.CUST)=0 +THEN CUST_nAME:= 'poor'a +ELSIF +cAUNT(VENDORS.CUST)<2 AND cAUNT(VENDORS.CUST)>0 +THEN CUST_nAME:= 'common' +ELSE +cAUNT(VENDORS.CUST)=>2 +THEN CUST_nAME:= 'rich' +end if; +SELECT vENDORS_VEND_NAME FROM VENDORS + +eND; + + + + +/*3. Створити предсавлення та використати його у двох запитах: +3.1. Вивести ключ покупця та постачальника, що співпрацювали. +3.2. Вивести ім'я покупця та загальну кількість куплених ним продуктів 6 балів.*/ + +VIEW VENDO +cUSTOMERS +joIN cUSTOMERS +Orders.cust_id=cUSTOMERS.cust_id +joIN Orders oN +Orederitems.order_num=orders.order_num +joIN Orederitems oN +Products.prod_id=Orederitems.prod_id +joIN Products oN +Vndors.vend_id=Products.vend_id + +Select dISTINCT (vand_id,CUSTOMERS_ID) From VENDO + +SELECT CUSTOMERS_ID, COUNT(PROD_ID) FROM VENDO +WHERE oRDERS.order_num = ordersiytems.order_num + From ed9fbcbab5ecbef04c73494d550bcb5bda7a7e84 Mon Sep 17 00:00:00 2001 From: JuliaKovalchook Date: Fri, 1 Jun 2018 07:17:58 +0300 Subject: [PATCH 2/3] csc_export.py --- km62/Kovalchuk_Yuliia/laboratory3.sql | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/km62/Kovalchuk_Yuliia/laboratory3.sql b/km62/Kovalchuk_Yuliia/laboratory3.sql index 358675d0..870d6bc4 100644 --- a/km62/Kovalchuk_Yuliia/laboratory3.sql +++ b/km62/Kovalchuk_Yuliia/laboratory3.sql @@ -69,3 +69,48 @@ Select dISTINCT (vand_id,CUSTOMERS_ID) From VENDO SELECT CUSTOMERS_ID, COUNT(PROD_ID) FROM VENDO WHERE oRDERS.order_num = ordersiytems.order_num + + +import csv + +import cx_Oracle + +connection = cx_Oracle.connect("system", "uuuliakov1607199por", "xe") + +cursor_shop= connection.cursor() + +cursor_shop.execute(""" +SELECT + TRIM(shop_id) as shop_id, + TRIM(shop_name) as shop_name, + TRIM(shopt_location) as shopt_location +FROM + shop""") + + + +for shop_id, shop_name, shopt_location in cursor_shop: + + with open("shop_"+shop_id+".csv", "w", newline="") as file: + writer = csv.writer(file) + + writer.writerow(["ID", shop_id]) + writer.writerow(["Name", shop_name]) + writer.writerow(["Location", shop_locatione]) + + cursor_phone = connection.cursor() + + query = """ + SELECT + * + FROM + phone + WHERE TRIM(shop_id) = :id""" + + cursor_phone.execute(query, id = shop_id) + writer.writerow([]) + writer.writerow(["phone_id", "phone number", "phone price", "phone_marka"]) + for phone_row in cursor_phone: + writer.writerow(phone_row) + +cursor_shop.close() From dbfd707d9d2d760b0bc00046d065517a45fb2fac Mon Sep 17 00:00:00 2001 From: JuliaKovalchook Date: Fri, 1 Jun 2018 07:22:28 +0300 Subject: [PATCH 3/3] csv_import.py --- km62/Kovalchuk_Yuliia/laboratory3.sql | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/km62/Kovalchuk_Yuliia/laboratory3.sql b/km62/Kovalchuk_Yuliia/laboratory3.sql index 870d6bc4..0e1e4eb4 100644 --- a/km62/Kovalchuk_Yuliia/laboratory3.sql +++ b/km62/Kovalchuk_Yuliia/laboratory3.sql @@ -114,3 +114,40 @@ for shop_id, shop_name, shopt_location in cursor_shop: writer.writerow(phone_row) cursor_shop.close() + +import csv +import cx_Oracle + +connection = cx_Oracle.connect("system", "uuuliakov1607199por", "xe") +filename = "shop_1132.csv" + +with open(filename, newline='') as file: + reader = csv.reader(file) + + id = next(reader)[1] + name = next(reader)[1] + Location = next(reader)[1] + + insert_query = "insert into shop(shop_id, shop_name, shop_location) values (:shop_id, :shop_name, :shop_location )" + cursor_shopomer = connection.cursor() + cursor_shopomer.execute(insert_query, shop_id = id, shop_name = name, shop_location = location) + cursor_shopomer.close() + + connection.commit() + + next(reader, None) + next(reader, None) + + insert_query = "INSERT INTO phone (phone_name, phone_id, phone_marka, phone_price) VALUES (:phone_name, :phone_id, :phone_marka, :phone_price)" + cursor_order = connection.cursor() + + cursor_order.prepare (insert_query) + + rows = [] + for row in reader: + rows.append(row[id]) + + cursor_order.executemany(None, rows) + + cursor_order.close() + connection.commit()