<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Projekt w PostgreSQL]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1850&amp;type=atom"/>
	<updated>2013-06-04T14:14:20Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1850</id>
		<entry>
			<title type="html"><![CDATA[Projekt w PostgreSQL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4567#p4567"/>
			<content type="html"><![CDATA[Witam wszystkich. 

Nasz ćwiczeniowiec z Baz Danych zadaje nam różne projekty i przyszedł czas na PostgreSQL ;) 
Dotychczas wszystko kręciło się wokół MySQL i było ok, ale w PostgreSQL ciężko mi przerobić już gotowe funkcje, wyzwalacze, procedury i pivoty. Jedyne co działa to widoki ;D

Czy będzie ktoś tak dobry i pomoże w tym? Potrzeba mi tylko przykładu jak zrobić resztę, ponieważ mamy po 4 przykłady z każdej "dziedziny", wszystkie te sprawy są wymyślane indywidualnie. Z góry dziękuje za pomoc i pozdrawiam. Próbowałem coś dodawać, ale nie wiem czy dobrze zrobiłem.


Funkcja:

--4) funkcja 2 - funkcja, ktora wyswietli ilosc sztuk zakupionych przez klienta, poprzez wywolanie jego nr id we funkcji.

CREATE FUNCTION znajdz_klienta(@id_klient INT)
RETURNS integer AS $$
BEGIN 
RETURN (SELECT z.ilosc_sztuk
FROM klientP k JOIN zamowienie z ON
k.id_klient=z.id_klient WHERE k.id_klient=@id_klient)
END
$$ LANGUAGE 'PLPGSQL';
;

--Przykladowe wywolanie.

SELECT znajdz_klienta(4) AS ilosc_sztuk;



--9) procedura 3 - procedura, ktora wyswietla nam klientow spelniajacych odpowiednio dobrane kryteria

CREATE PROCEDURE o_kliencie
@nr_domu INT =20
AS
BEGIN 
SELECT imie,nazwisko,nr_domu
FROM klientP
WHERE nr_domu>@nr_domu
ORDER BY nr_domu,nazwisko,imie
END
;

--Przykladowe wywolanie.

EXEC o_kliencie;


CREATE TRIGGER usun_klienta 
AFTER DELETE ON klientP
FOR EACH ROW EXECUTE PROCEDURE usun_klienta();
BEGIN
DELETE FROM zamowienie
WHERE id_klient IN 
(SELECT id_klient FROM deleted)
END
;

--Przykladowe wywolanie. 

DELETE FROM klientP WHERE id_klient=2;



--15) pivot 1 - PIVOT umieszczony w widoku. Pivot ma za zadanie zsumowac ceny gitar wg ich kategorii.

CREATE VIEW sumuj_cene_gitar
AS
SELECT marka, [elektryczna] , [akustyczna] , [basowa], [klasyczna]
FROM gitary
PIVOT
(
SUM(cena)
FOR[typ_gitary] IN ([elektryczna] , [akustyczna] , [basowa], [klasyczna])
)
AS p
;]]></content>
			<author>
				<name><![CDATA[Qkis1993]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1589</uri>
			</author>
			<updated>2013-06-04T14:14:20Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4567#p4567</id>
		</entry>
</feed>
