Ai giỏi CSDL thì giúp em với !

doquyen1989

Legend of Zelda
Là thế này..em sắp Thi mà không biết làm dạng bài này, làm thì chạy được nhưng khi Insert dữ liệu vào thì nó báo lỗi... em xin gửi bài làm này cho các anh chị xem, ai biết sửa sao chỉ giúp em với, em cám ơn nhiều lắm...

Cái chỗ NhânViên đó, nó là khóa chính, rồi ở trong nó, có 1 cái khóa ngoại và cũng là chính nó, em làm chạy được nhưng khi insert dữ liệu vào thì nó báo lỗi:
INSERT statement conflicted with COLUMN FOREIGN KEY SAME TABLE constraint 'FK__nhanvien__Ma_NQL__77BFCB91'. The conflict occurred in database 'tongquat', table 'nhanvien', column 'MaNV'.
The statement has been terminated.


...>< ko biết sửa sao...

create database tongquat
ON
( NAME = 'doquyen_dat',
FILENAME = 'd:\baitap_dat.mdf',
SIZE = 1,
MAXSIZE = 2,
FILEGROWTH = 10% )
LOG ON
( NAME = 'doquyen_log',
FILENAME = 'd:\baitap_log.ldf',
SIZE = 1MB,
MAXSIZE = 2MB,
FILEGROWTH = 20% )
GO

use tongquat

create table nhanvien
(MaNV char(4) primary key,
HoNV nvarchar(20),
TenNV nvarchar(20),
Phai char(5),
NgaySinh datetime,
ChucVu char(5),
Ma_NQL char(4) foreign key references nhanvien(MaNV)
)



Insert NhanVien values('NV01','Nguyễn Tấn','Phát', 'Nam', '02/12/1980','NV','NV02')

Insert NhanVien values('NV02','Trương Thị Hoàng','Phương', 'Nữ', '03/05/1988','KT','NV05')

Insert NhanVien values('NV03','Lê Hoài','Phú', 'Nam', '04/05/1983','NV','NV05')

Insert NhanVien values('NV04','Nguyễn Thanh','Phùng', 'Nam', '07/02/1968','TQ','NV05')

Insert NhanVien values('NV05','Hồ Thị Thanh','Nga', 'Nữ', '11/02/1960','KT','NV02')





create table khachhang
(MaKH nvarchar(10)primary key,
TenCTy nvarchar(100),
DiaChi nvarchar(50),
DienThoai nvarchar(20))

alter table khachhang alter column tenCty nvarchar(50)

--drop table khachhang
Insert khachHang values('FAHASA','Phát Hành Sách Sài Gòn','12 Thuận Kiều F6 Q11','08.7675655')
Insert KhachHang values('FISC','Dịch Vụ Đầu Tư Nước Ngoài','31 Trương Định P6 Q1','09.6544343')
Insert KhachHang values('HUNSAN','Hùng Sán','275 Lý Thường Kiệt P15 Q11','07.5454543')
Insert KhachHang values('SAFICO','Thuỷ Sản Xuất Khẩu','47 Bải Sậy P1 Q3','08.5635467')





create table hoadon
(MaHD int primary key,
LoaiHD nvarchar(10),
MaKH nvarchar(10)foreign key references khachhang(makh),
MaNV char(4)foreign key references nhanvien(manv),
NgayLapHD datetime)
insert HoaDon values('10145','Xuất','HUNSAN', 'NV02','09/01/06')

insert HoaDon values('10148','Nhập','FISC', 'NV01','10/01/06')

insert HoaDon values('10150','Xuất','FAHASA', 'NV04','01/17/06')

insert HoaDon values('10156','Trả','FISC', 'NV01','01/28/06')

insert HoaDon values('10157','Trả','FISC', 'NV04','03/27/06')

insert HoaDon values('10158','Nhập','FAHASA', 'NV02','3/04/06')

insert HoaDon values('10166','Nhập','HUNSAN', 'NV03','04/13/06')




create table ChiTietHoaDon
(MaHD int foreign key references HoaDon(MaHD),
MaSP int foreign key references SanPham(MaSP),
SoLuong tinyint,
primary key(MaHD,MaSP))
insert ChiTietHoaDon values('10145',1,8)

insert ChiTietHoaDon values('10145',2,20)

insert ChiTietHoaDon values('10148',1,35)

insert ChiTietHoaDon values('10148',2,12)

insert ChiTietHoaDon values('10148',3,24)

insert ChiTietHoaDon values('10150',1,9)

insert ChiTietHoaDon values('10156',1,25)

insert ChiTietHoaDon values('10156',2,25)

insert ChiTietHoaDon values('10157',3,35)

insert ChiTietHoaDon values('10158',1,12)

insert ChiTietHoaDon values('10158',3,20)




create table sanpham
(MaSP int primary key ,
TenSP nvarchar(20),
DVT nvarchar(20),
DonGia int)
--sua 1 cot trong 1 ban nao do
alter table sanpham alter column dongia int

--drop table sanpham
Insert sanPham values(1,'Rượu','Chai',230)
Insert SanPham values(2,'Gia Vị','Thùng',20)
Insert SanPham values(3,'Bánh Kem','Cái',50)
Insert SanPham values(4,'Đường','Kg',10)
select *from nhanvien
select *from sanpham
select *from chitiethoadon
select *from hoadon
select *from khachhang

/*1. Thêm vào bảng khách hàng một khách hàng mới với các thông tin sau:

Mã khách hàng: CO.OP

Tên khách hàng: Sài gòn Co.opMart

Địa chỉ: 573 Nguyễn Kiệm, Q.Phú Nhuận*/

insert khachhang values('CO.OP','Sài gòn Co.opMart','573 Nguyễn Kiệm, Q.Phú Nhuận',NULL)

select *from khachhang

/*2. Thêm vào bảng nhân viên một nhân viên mới với các thông tin sau:

Mã nhân viên: NV06

Họ nhân viên: Lê Hoà

Tên nhân viên: Lai

Phái: Lai

Ngày sinh: 15/10/85

Chức vụ: GĐ */
insert nhanvien values('NV06','Lê Hoà','Lai','nam','10/15/85','GD',null)
select *from nhanvien
/*3. Cập nhật Ma_NQL là ‘NV06’ cho nhân viên có mã nhân viên ‘NV02’.*/
update nhanvien
set ma_nql='NV06'
where manv='NV02'

select *from nhanvien
--4. Liệt kê các khách hàng chưa có số điện thoại.
select *from khachhang
where dienthoai is null
select *from khachhang
--5. Cho biết chi tiết những hóa đơn lập trong tháng 1 gồm:
--mã hóa đơn, mã khách, tên hàng, mã nhân viên, ngày lập hoá đơn
select h.mahd,makh,tensp,manv,ngaylaphd
from chitiethoadon c,sanpham s,hoadon h
where h.mahd=c.mahd and s.masp=c.masp and month(ngaylaphd) ='1'

--14Viết thủ tục Sp_InsertSanPham có tham số dạng input dùng để chèn một mẫu tin vào bảng Sanpham.

create proc Sp_InsertSanPham @ma int,@ten nvarchar(30), @DVT nvarchar(20),@dg money
as
insert dbo.sanpham values(@ma,@ten,@dvt,@dg)

exec Sp_InsertSanPham 5,'Gao','KG',17000

exec Sp_InsertSanPham 6,'Duong','KG',10000


--Viết thủ tục Sp_InsertNV_KH có tham số dùng để chèn một mẫu tin vào bảng NhanVien hoặc KhachHang.
--Trong dùng 1 tham số @flag kiểu bit để phân biệt 2 bảng trên khi chèn.
alter proc Sp_InsertNV_KH @ma char(4),@honv nvarchar(20),@ten nvarchar(20),
@phai char(5),@ngaysinh datetime,@chucvu char(5),@ma_nql char (4),@dc nvarchar(40),@dt char(10),@flag bit
as

if (@flag=0)
insert dbo.nhanvien values (@ma,@honv,@ten,@phai,@ngaysinh,@chucvu,@ma_nql)
else
insert khachhang values(@ma,@ten,@dc,@dt)

exec Sp_InsertNV_KH 'LAI',null,'CTy TNHH Lai',null,null,null,null,'Q1','08255555',1

exec Sp_InsertNV_KH 'NV09','Nguyen Thi','Lai',null,null,null,null,'Q1','08255555',0


Cái hình của bài em làm ở file đính kèm... mong các anh chị giúp em
 
create table nhanvien
(MaNV char(4) primary key,
HoNV nvarchar(20),
TenNV nvarchar(20),
Phai char(5),
NgaySinh datetime,
ChucVu char(5),
Ma_NQL char(4) foreign key references nhanvien(MaNV)
)

Ai lại để khóa ngoại lấy dữ liệu khóa chính chung 1 bảng thế .
Trường Ma_NQL dùng làm gì ?
 
Dạ ... đó là mã người quản Lý... vì trong cái đề... bắt làm như thế... em hem có bít làm... kì wá, bị lỗi hoài, chắc cô ra sai đề hay sao ta
 
tui thì thấy là thế này, ông check lại nha
Khi ông tạo bảng xong và chạy các câu insert dữ liệu vào, thì dòng khóa ngoại tham chiếu là
Insert NhanVien values('NV01','Nguyễn Tấn','Phát', 'Nam', '02/12/1980','NV','NV02')

ở đây, dòng đầu tiên của bảng có khóa chính là nv01, trong khi lại tham chiếu đến nv02 là chưa có trong bảng
Để fix, ông có thề làm như sau, tạm bỏ dữ liệu tham chiw61u khóa ngoại ra đã,

Insert NhanVien values('NV01','Nguyễn Tấn','Phát', 'Nam', '02/12/1980','NV',NULL)

Sau đó mới dùng câu lệnh update hay gõ bằng tay vào lại

Try ... :|
 
tui thì thấy là thế này, ông check lại nha
Khi ông tạo bảng xong và chạy các câu insert dữ liệu vào, thì dòng khóa ngoại tham chiếu là
Insert NhanVien values('NV01','Nguyễn Tấn','Phát', 'Nam', '02/12/1980','NV','NV02')

ở đây, dòng đầu tiên của bảng có khóa chính là nv01, trong khi lại tham chiếu đến nv02 là chưa có trong bảng
Để fix, ông có thề làm như sau, tạm bỏ dữ liệu tham chiw61u khóa ngoại ra đã,

Insert NhanVien values('NV01','Nguyễn Tấn','Phát', 'Nam', '02/12/1980','NV',NULL)

Sau đó mới dùng câu lệnh update hay gõ bằng tay vào lại

Try ... :|

Ồ Thanks... tui sẽ thử... cám ơn... tối nay có làm được hay hok tui sẽ pm lại...
Cám ơn... em làm được roài... thanks mọi người... Thanks SoII
 
hmmm nhìn đoạn Code mà thấy sốt chẳng mạch lạc gì ráo, nhìn rối thiệt , ai mà lại viết như thế ?
 
Back
Top