SQL error
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: SQL error
ako cudzí kľúč môžeš použiť iba primárny kľúč inej tabuľky. Ty toto pravidlo porušuješ pri vytváraní nejakej tabuľky kde sa snažíš definovať foreign key.
Re: SQL error
VDAKA za radu.. Zda sa vsak, ze toto som neporusil.. Zrada bude niekde inde..
Re: SQL error
skus ukazat ten script...
Re: SQL error
Vdaka..posielam:
//2. vytvorit pod tymto uzivatelom 3 tabulky.
//2.1. tabulka tab_zmluva (id, cislo zmluvy, datum, poznamka)
DROP TABLE IF EXISTS tab_zmluva
CREATE TABLE tab_zmluva (
id_tab_zmluva INTEGER NOT NULL PRIMARY KEY, //AUTO INCREMENT
cislo_zmluvy INTEGER NOT NULL,
datum DATE,
poznamka VARCHAR(60),
);
//2.2. tabulka tab_typ_splatky (id, typ, nazov)
DROP TABLE IF EXISTS tab_typ_splatky
CREATE TABLE tab_typ_splatky (
id_tab_typ_splatky INTEGER NOT NULL PRIMARY KEY,
typ CHAR(1) NOT NULL,
nazov CHAR(60),
);
//2.3. tabulka tab_splatka (id, id zmluvy, id splatky, suma, datum splatky, poznamka)
DROP TABLE IF EXISTS tab_splatka
CREATE TABLE tab_splatka (
id_tab_splatka INTEGER NOT NULL PRIMARY KEY,
id_zmluva INTEGER NOT NULL,
id_typ_splatky INTEGER NOT NULL,
suma NUMERIC(10,2),
datum_splatky DATE,
poznamka VARCHAR(60),
FOREIGN KEY id_zmluva REFERENCES tab_zmluva (id),
FOREIGN KEY id_typ_splatky REFERENCES tab_typ_splatky (id),
);
//3. vytvorit vazby medzi tabulkami pomocou foreign klucov, nastavit pravo na operacie (select, insert, delete, update) novemu uzivatelovi
GRANT SELECT, INSERT, DELETE, UPDATE ON tab_zmluva TO vali
GRANT SELECT, INSERT, DELETE, UPDATE ON tab_typ_splatky TO vali
GRANT SELECT, INSERT, DELETE, UPDATE On tab_splatka TO vali
//4. naplnit si tabulku s testovacimi datami (cez Insert v SQL)
//tab_zmluva
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1001, 201001, '2010-01-01',
'Odber vody na rok 2010' );
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1002, 201002, '2010-01-01',
'Odber plynu na rok 2010' );
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1003, 201003, '2010-01-01',
'Odber tepla na rok 2010' );
//tab_typ_splatky
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2001, 'P', 'Pravidelna' );
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2002, 'M', 'Mimoriadna' );
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2003, 'D', 'Doplatok' );
//tab_splatka
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3001, 1001, 2001, 100, '2010-01-10', 'voda za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3002, 1002, 2001, 100, '2010-01-10', 'plyn za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3003, 1003, 2001, 100, '2010-01-10', 'teplo za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3004, 1001, 2002, 200, '2010-02-05', 'voda za 02,03/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3005, 1002, 2001, 100, '2010-02-10', 'plyn za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3006, 1003, 2001, 80, '2010-02-10', 'teplo zaloha za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3007, 1002, 2001, 100, '2010-03-10', 'plyn za 03/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3008, 1003, 2001, 20, '2010-03-10', 'teplo doplatok za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3009, 1003, 2001, 100, '2010-03-10', 'teplo za 03/2010');
//5. vytvorit funkciu ktora vrati pre danu zmluvu (parameter),
// celkovu sumu jej splatok
SELECT * FROM tab_zmluva WHERE tab_zmluva.cislo_zmluvy=201001
//DEFINUJEME PROPERTY
BEGIN
DECLARE @cislo_zmluvy int;
SET @cislo_zmluvy = 201001;
CREATE FUNCTION spl_total ( @Cislo_zmluvy INTEGER)
RETURNS NUMBER
BEGIN
DECLARE @total NUMBER;
SELECT SUM(SUMA)INTO @total FROM tab_splatka WHERE tab_zmluva.cislo_zmluvy = @Cislo_zmluvy
RETURN number
END
END
//
SELECT SUM(SUMA)FROM tab_splatka WHERE tab_splatka.id_zmluva = 1001
//autoeditácia príspevku (25 Apr 2010, 17:08)
na tomto riadku :
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3001, 1001, 2001, 100, '2010-01-10', 'voda za 01/2010');
zahlasi: No primary key value for foreign key..
//2. vytvorit pod tymto uzivatelom 3 tabulky.
//2.1. tabulka tab_zmluva (id, cislo zmluvy, datum, poznamka)
DROP TABLE IF EXISTS tab_zmluva
CREATE TABLE tab_zmluva (
id_tab_zmluva INTEGER NOT NULL PRIMARY KEY, //AUTO INCREMENT
cislo_zmluvy INTEGER NOT NULL,
datum DATE,
poznamka VARCHAR(60),
);
//2.2. tabulka tab_typ_splatky (id, typ, nazov)
DROP TABLE IF EXISTS tab_typ_splatky
CREATE TABLE tab_typ_splatky (
id_tab_typ_splatky INTEGER NOT NULL PRIMARY KEY,
typ CHAR(1) NOT NULL,
nazov CHAR(60),
);
//2.3. tabulka tab_splatka (id, id zmluvy, id splatky, suma, datum splatky, poznamka)
DROP TABLE IF EXISTS tab_splatka
CREATE TABLE tab_splatka (
id_tab_splatka INTEGER NOT NULL PRIMARY KEY,
id_zmluva INTEGER NOT NULL,
id_typ_splatky INTEGER NOT NULL,
suma NUMERIC(10,2),
datum_splatky DATE,
poznamka VARCHAR(60),
FOREIGN KEY id_zmluva REFERENCES tab_zmluva (id),
FOREIGN KEY id_typ_splatky REFERENCES tab_typ_splatky (id),
);
//3. vytvorit vazby medzi tabulkami pomocou foreign klucov, nastavit pravo na operacie (select, insert, delete, update) novemu uzivatelovi
GRANT SELECT, INSERT, DELETE, UPDATE ON tab_zmluva TO vali
GRANT SELECT, INSERT, DELETE, UPDATE ON tab_typ_splatky TO vali
GRANT SELECT, INSERT, DELETE, UPDATE On tab_splatka TO vali
//4. naplnit si tabulku s testovacimi datami (cez Insert v SQL)
//tab_zmluva
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1001, 201001, '2010-01-01',
'Odber vody na rok 2010' );
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1002, 201002, '2010-01-01',
'Odber plynu na rok 2010' );
INSERT INTO tab_zmluva (
id_tab_zmluva,
cislo_zmluvy,
datum,
poznamka )
VALUES
(1003, 201003, '2010-01-01',
'Odber tepla na rok 2010' );
//tab_typ_splatky
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2001, 'P', 'Pravidelna' );
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2002, 'M', 'Mimoriadna' );
INSERT INTO tab_typ_splatky (
id_tab_typ_splatky,
typ,
nazov )
VALUES
(2003, 'D', 'Doplatok' );
//tab_splatka
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3001, 1001, 2001, 100, '2010-01-10', 'voda za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3002, 1002, 2001, 100, '2010-01-10', 'plyn za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3003, 1003, 2001, 100, '2010-01-10', 'teplo za 01/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3004, 1001, 2002, 200, '2010-02-05', 'voda za 02,03/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3005, 1002, 2001, 100, '2010-02-10', 'plyn za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3006, 1003, 2001, 80, '2010-02-10', 'teplo zaloha za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3007, 1002, 2001, 100, '2010-03-10', 'plyn za 03/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3008, 1003, 2001, 20, '2010-03-10', 'teplo doplatok za 02/2010');
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3009, 1003, 2001, 100, '2010-03-10', 'teplo za 03/2010');
//5. vytvorit funkciu ktora vrati pre danu zmluvu (parameter),
// celkovu sumu jej splatok
SELECT * FROM tab_zmluva WHERE tab_zmluva.cislo_zmluvy=201001
//DEFINUJEME PROPERTY
BEGIN
DECLARE @cislo_zmluvy int;
SET @cislo_zmluvy = 201001;
CREATE FUNCTION spl_total ( @Cislo_zmluvy INTEGER)
RETURNS NUMBER
BEGIN
DECLARE @total NUMBER;
SELECT SUM(SUMA)INTO @total FROM tab_splatka WHERE tab_zmluva.cislo_zmluvy = @Cislo_zmluvy
RETURN number
END
END
//
SELECT SUM(SUMA)FROM tab_splatka WHERE tab_splatka.id_zmluva = 1001
//autoeditácia príspevku (25 Apr 2010, 17:08)
na tomto riadku :
INSERT INTO tab_splatka
(id_tab_splatka, id_zmluva, id_typ_splatky, suma, datum_splatky, poznamka )
VALUES
(3001, 1001, 2001, 100, '2010-01-10', 'voda za 01/2010');
zahlasi: No primary key value for foreign key..
Re: SQL error
no v prvom rade to editni do code... takto to nikto citat nebude
Re: SQL error
medzi tym..teda uz v poslanom skripte som zmenil nazvy primarnych klucov vo vsetkych tabulkach tak, aby bol kazdy inak nazvany..zda sa ze toto bol problrem..inak povedane..zda sa ze primarny kluc v 2 resp. viacerych tabulkach, nesmie mat pri pouziti FOREIGN KEY rovnaky nazov..
//autoeditácia príspevku (25 Apr 2010, 17:15)
"editni do code" ... v SQL som zaciatocnik, ako to urobim ?
//autoeditácia príspevku (25 Apr 2010, 17:15)
"editni do code" ... v SQL som zaciatocnik, ako to urobim ?
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
Re: SQL error
duplicitný účet? IP máte rovnaké, čakám vysvetlenie a spolu s vysvetlením si aj vyber ktorý z tých dvoch mám zabanovať
Re: SQL error
ked uz musis tak tento..syn je pri PC a ja pri notasi..
//autoeditácia príspevku (25 Apr 2010, 17:24)
este prosba..oboznamujem sa s SQL a potrebujem urobit vzorovy script..pomohla by nejaka inspiracia..Nevies poradit kde najdem nejake ukazkove scripty ?
//autoeditácia príspevku (25 Apr 2010, 17:24)
este prosba..oboznamujem sa s SQL a potrebujem urobit vzorovy script..pomohla by nejaka inspiracia..Nevies poradit kde najdem nejake ukazkove scripty ?
Re: SQL error
do code mas dat ten script tuna na fore
a tutorial na sql je napr tu: http://www.w3schools.com/Sql/sql_create_table.asp
a vela dalsich uzitocnych info
Kód: Vybrať všetko
toto je v code a vela dalsich uzitocnych info
Re: SQL error
nechybaju ti tam aj constraints?
-
__construct
Medium Expert
- Príspevky: 108
- Registrovaný: 23 sep 2009, 9:32
- Bydlisko: Dark Side of The Moon
- Kontaktovať používateľa:
Re: SQL error
Nechýba - je to nepovinné ..Jasty napísal:nechybaju ti tam aj constraints?