|
Практические занятия проходили у Ахметзянова И.М., поэтому работали с бд Firebird 2.0.
FoxPro по-старинке преподает Верхолат А.М.
Выкладываю свои лабораторные 1,2 вариант не помню..15-й кажется
1 лабораторная - надо было сделать базу в IBExpert с двумя таблицами: фирмы(там ID, имя, адрес, телефон), и записи по компьютерам - (ID, фирма-поставщик, характеристики, дата продажи) затем написать в DELPHI прогу для управления всем этим безобразием...к базе коннектимся через ADO - в методичке по визуальному программированию Раковой все написано как делать в лабе 7...да, и задания, там же все приведены по вариантам...
скачать первую лабу
2 лабораторная - SQL запросы. Надо было сделать базу в IBExpert с таблицами: покупательи, продукты, поставщики, покупки, поставки и написать SQL запросы на диалекте firebird - он немного отличается от mysql (например, оператора LIMIT там нет, вместо него есть FIRST), в Firebird 2.0 свой SQL диалект - на нашем сайте описаны основные операторы: SELECT, INSERT, UPDATE.
ну DELETE я опустил - там все просто)
Так же можно заглянуть в документацию на сайт ibexpert.net - там найдете все остальное
Документация на английском!
GDB файлы прилагаются...
скачать вторую лабу
а вот SQL запросы к базе из второй лабораторной:
A1) SELECT product.name FROM product
A2) SELECT customer.name, product.name FROM customer left join product on (customer.id = product.id)
A3) SELECT product.name FROM product LEFT JOIN purchaised on (product.id = purchaised.prod_id) WHERE purchaised.cust_id = 9
A4) SELECT customer.id as ID, customer.name as NAME, COUNT(purchaised.id) as COU FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) GROUP BY customer.id, customer.name
A5) SELECT customer.id as ID, customer.name as NAME, COUNT(purchaised.id) as COU FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) WHERE customer.id = 1 GROUP BY customer.id, customer.name
A6)
SELECT COUNT(purchaised.id) as VSEGO_POKUPOK FROM purchaised
A7) SELECT customer.id as ID, customer.name as NAME, COUNT(purchaised.id) as POKUPKI FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) WHERE customer.id = 9 GROUP BY customer.id, customer.name
B1) SELECT customer.name as POKUPATEL, SUM(supply.cost) as STOIMOST_POKUPOK FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) LEFT JOIN supply on(purchaised.prov_id = supply.prov_id) GROUP BY customer.name HAVING (SUM(supply.cost)>0)
B2) SELECT provider.name as POSTAVSHIK, SUM(supply.cost) as OBCHAYA_STOIMOST_POKUPOK FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) LEFT JOIN supply on(purchaised.prov_id = supply.prov_id) LEFT JOIN provider on(supply.prov_id = provider.id) WHERE customer.id = 9 GROUP BY provider.name HAVING (SUM(supply.cost)>0)
B3) SELECT customer.name as PORUPATEL FROM customer LEFT JOIN purchaised on(purchaised.cust_id = customer.id) LEFT JOIN provider on(purchaised.prov_id = provider.id) WHERE purchaised.prov_id <> 9 GROUP BY customer.name HAVING COUNT(purchaised.id)>=1
B4) DELETE FROM provider WHERE not exists( SELECT * FROM supply WHERE (provider.id = supply.prov_id) )
или
DELETE FROM provider USING provider INNER JOIN supply on(provider.id = supply.prov_id) HAVING COUNT(supply.id) = 0
B5)
DELETE FROM customer WHERE NOT EXISTS( SELECT * FROM purchaised WHERE purchaised.cust_id = customer.id )
B6)
SELECT NAME, SUMMA from ( SELECT customer.id as CUSTID, SUM(supply.cost) as SUMMA FROM customer INNER JOIN purchaised ON(customer.id = purchaised.cust_id) INNER JOIN supply ON(purchaised.prod_id = supply.prod_id) WHERE purchaised.prov_id = 9 GROUP BY customer.id ) as qwe INNER JOIN customer ON (customer.id = qwe.CUSTID) WHERE qwe.SUMMA = ( SELECT MAX(SUMMA) FROM ( SELECT customer.id as CUSTID, SUM(supply.cost) as SUMMA FROM customer INNER JOIN purchaised ON(customer.id = purchaised.cust_id) INNER JOIN supply ON(purchaised.prod_id = supply.prod_id) WHERE purchaised.prov_id = 9 GROUP BY customer.id ) as sums )
B7)
SELECT provider.name as POSTAVSHIK, SUM(supply.cost) as SUMMA_SDELOK_BOLSHE_50000 FROM provider LEFT JOIN supply ON(provider.id = supply.prov_id) GROUP BY provider.name HAVING SUM(supply.cost)>50000
B8)
SELECT product.name, COUNT(supply.id) as KOLICHESTVO_SDELOK FROM product LEFT JOIN supply ON(product.id = supply.prod_id) GROUP BY product.name ORDER BY KOLICHESTVO_SDELOK DESC
B9)
SELECT product.name, COUNT(supply.id) as KOLICHESTVO_SDELOK FROM product LEFT JOIN supply ON(product.id = supply.prod_id) GROUP BY product.name HAVING COUNT(supply.id)>=2
B10)
SELECT product.name, MIN(supply.cost) as MIN_CENA, MAX(supply.cost) as MAX_CENA FROM product LEFT JOIN supply ON(product.id = supply.prod_id) GROUP BY product.name
B11)
SELECT product.name, KOLVO_PREDLOJ, KOLVO_SDELOK, CENA FROM (SELECT product.id as PROD_ID, COUNT(supply.id) as KOLVO_PREDLOJ, COUNT(purchaised.id) as KOLVO_SDELOK, supply.cost as CENA FROM product LEFT JOIN supply ON(product.id = supply.prod_id) LEFT JOIN purchaised ON(product.id = purchaised.prod_id) GROUP BY product.id, supply.cost ) as query LEFT JOIN product ON(product.id = query.PROD_ID) GROUP BY product.name
B12)
SELECT provider.name as POSTAVSHIK, SUM(supply.cost) as STOIMOST FROM provider INNER JOIN supply ON(provider.id = supply.prov_id) GROUP BY provider.name
B13)
SELECT product.name as TOVAR, supply.cost as STOIMOST FROM product LEFT JOIN supply ON(product.id = supply.prod_id) LEFT JOIN provider ON(supply.prov_id = provider.id) WHERE provider.name = 'Emelyanov'
|