PDA

View Full Version : Help:lam sao insert table từ nhiều table khác



earthquake
10-06-2008, 17:18
Tôi có 3 table
phong<maphong,....>có khoảng 200 row
gv<magv,.....>có khoảng 60 row
lichgac<magacthi,maphong,magv1,magv2> chưa có dữ liệu trong đó magacthi tự tăng
tôi dùng câu truy vấn insert into lichgac(maphong,magv1,magv2) select phong.maphong,gv.magv,gv.magv from phong,gv
kết quả trả về là 1 table co 12000 row,do cứ mỗi maphong nó lại nhét toàn bộ magv vào.bi giờ tôi muốn tạo table chỉ có số row bằng số maphong còn magv thì là 2 trong số 60 magv trong bảng gv tôi phải truy vấn như thế nào,ai bit chi dùm hu hu

roseblue
10-06-2008, 18:17
Không thể có câu sql nào đáp ứng yêu cầu của bạn.
Nguyên tắc muốn insert 1 bảng từ 2 bảng khác thì giữa 2 bảng đó phải có mối quan hệ với nhau. Trong trường hợp của bạn bảng phong và bảng gv không có mối liên hệ.
Vì vậy trong câu insert của bạn nó sẽ lấy tích đề các của 2 bảng phong và gv nên số record là 200x60 = 12000.
Để giải quyết bài toán của bạn mình nghĩ bạn nên làm như sau:
- into lichgac(maphong) select phong.maphong from phong
- dùng 2 vòng for lồng nhau duyệt qua danh sách record của 2 bảng phong và gv. Rồi thực hiện lệnh update vào bảng lichgac.

awasjsc
11-06-2008, 01:32
dung transaction thử đi

earthquake
11-06-2008, 20:29
Không thể có câu sql nào đáp ứng yêu cầu của bạn.
Nguyên tắc muốn insert 1 bảng từ 2 bảng khác thì giữa 2 bảng đó phải có mối quan hệ với nhau. Trong trường hợp của bạn bảng phong và bảng gv không có mối liên hệ.
Vì vậy trong câu insert của bạn nó sẽ lấy tích đề các của 2 bảng phong và gv nên số record là 200x60 = 12000.
Để giải quyết bài toán của bạn mình nghĩ bạn nên làm như sau:
- into lichgac(maphong) select phong.maphong from phong
- dùng 2 vòng for lồng nhau duyệt qua danh sách record của 2 bảng phong và gv. Rồi thực hiện lệnh update vào bảng lichgac.

bạn thật pro mình xài phưong pháp của bạn đã thành công