Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tabele i relacje, MySQL
barinoshrek
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 6.12.2005

Ostrzeżenie: (0%)
-----


witam

mam sobie zrobione tabele i relacje miedzy nimi w taki oto sposob

Kod
CREATE TABLE InfDok
(    
    NrDowKs INTEGER (10) NOT NULL AUTO_INCREMENT,  
    IdZdarzenia INTEGER (30) NOT NULL,  
    DataZd DATE,  
    OpisZdarz varchar (60),  
    ZakTowWgCenZak DECIMAL (10,2) DEFAULT 0.00,    
    KosztUbocz DECIMAL (10,2) DEFAULT 0.00,
    Uwagi varchar (60),
    PRIMARY KEY (NrDowKs)
) TYPE=InnoDB;
*************************************

CREATE TABLE Kontrahent
(    
    IdKontr varchar (20) NOT NULL ,  
    NrDowKs INTEGER (10) NOT NULL ,
    IdZdarzenia INTEGER (30) NOT NULL,    
    ImieNazwisko varchar (30),
  Adres varchar (30),
    Telefon INTEGER (15) NOT NULL ,
    NIP INTEGER (10) NOT NULL ,
    PRIMARY KEY (IdKontr),
        INDEX (NrDowKs),
    FOREIGN KEY (NrDowKs) REFERENCES InfDok (NrDowKs)
    ) TYPE=InnoDB;
******************************************

CREATE TABLE Wydatki
(
    IdWydatki INTEGER (20) NOT NULL AUTO_INCREMENT,
  IdKontr varchar (20) NOT NULL ,
    IdZdarzenia INTEGER (30) NOT NULL,
  Wynagrodzenia DECIMAL (10,2) DEFAULT 0.00,
  KosztReprez DECIMAL (10,2) DEFAULT 0.00,
  PozWydat DECIMAL (10,2) DEFAULT 0.00,
  RazemWydat DECIMAL (10,2) DEFAULT 0.00,
  PRIMARY KEY (IdWydatki),
    INDEX (IdKontr),
    FOREIGN KEY (IdKontr) REFERENCES Kontrahent (IdKontr)
    ) TYPE=InnoDB;
***************************************

CREATE TABLE Przychod
(
    IdPrzychod INTEGER (20) NOT NULL AUTO_INCREMENT,
  IdZdarzenia INTEGER (30),
    WartSpTowUslug DECIMAL (10,2) DEFAULT 0.00,
  PozPrzych DECIMAL (10,2) DEFAULT 0.00,
  RazemPrzych DECIMAL (10,2) DEFAULT 0.00,
  PRIMARY KEY (IdPrzychod),
    INDEX (IdZdarzenia),
    FOREIGN KEY (IdZdarzenia) REFERENCES Kontrahent (IdZdarzenia)
      
) TYPE=InnoDB;



i mam z tym problem takiekgo rzedu, ze tabele InfDok, Kontrahent i Wydatki dodaja sie bez problamów, ale nie chce mi sie dodać/wgrac tabela Przychod?? , może ktos wie dlaczego gdzie moge miec błąd??
Go to the top of the page
+Quote Post
Zbłąkany
post
Post #2


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

Ostrzeżenie: (0%)
-----


Wydaje mi się, że powinnieneś w tabeli "Przychod" zamiast:
  1. IdZdarzenia INTEGER (30),

dać
  1. IdZdarzenia INTEGER (30) NOT NULL,
smile.gif Patrząc na ten kod do takiego doszedłem wniosku, bo wszędzie gdzie w macierzystej tabeli było NOT NULL to dodawałeś i działało, a tam brakuje i nie działa biggrin.gif


--------------------
Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox
Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..."
Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL"
Go to the top of the page
+Quote Post
barinoshrek
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 6.12.2005

Ostrzeżenie: (0%)
-----


no idalej jest to samo sad.gif
Go to the top of the page
+Quote Post
sobstel
post
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


jaki komunikat o bledzie otrzymujesz?


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
Go to the top of the page
+Quote Post
barinoshrek
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 6.12.2005

Ostrzeżenie: (0%)
-----


cos takiego

Kod
Executing Query. Wait ...
MySQL ERROR:

Can't create table './kramarye/Przychod.frm' (errno: 150)

QUERY:

CREATE TABLE Przychod
(
    IdPrzychod INTEGER (20) NOT NULL AUTO_INCREMENT,
  IdZdarzenia INTEGER (30),
    WartSpTowUslug DECIMAL (10,2) DEFAULT 0.00,
  PozPrzych DECIMAL (10,2) DEFAULT 0.00,
  RazemPrzych DECIMAL (10,2) DEFAULT 0.00,
  PRIMARY KEY (IdPrzychod),
    INDEX (IdZdarzenia),
    FOREIGN KEY (IdZdarzenia) REFERENCES Kontrahent (IdZdarzenia)
) TYPE=InnoDB;
Go to the top of the page
+Quote Post
Dafidov
post
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

Ostrzeżenie: (0%)
-----


Nie wiem czy pomoc jest jeszcze potrzebna ale miałem podobne kłopoty, wydaje mi się iż problem leży w tym iż w tabeli kontrachent nie nadałeś indexu
Kod
INDEX (IdKontr)

i oczwiscie referencja też nie wyjdzie ponieważ są inne typy danych w polu:
Kod
IdZdarzenia INTEGER (30) NOT NULL,

w tabeli kontrachent i w tablei Przychod:
Kod
IdZdarzenia INTEGER (30),

Jak tworzysz klucz obcy to musisz pamiętać aby i on i parametr do którego się odnosi miały te same typy danych.
Mam nadzieje że to pomoże smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 06:24