PDA

View Full Version : Hoi ve` SQL



abcIT
02-09-2002, 20:06
cho mi`nh hoi :

vi' du. CSDL go`m 3 bang :
bang 1 : TCN (Ten cong nhan)
field 1 : TenCN (primary key)
field 2 : MaCN
bang 2 : CNDA (Cong Nhan - Du An)
field 1 : MaCN
field 2 : MaDA
bang 3 : TDA (Ten du an)
field 1 : TenDA (primary key)
field 2 : MaDA

mot cong nhan co' the tham gia nhie`u du. a'n va` 1 du. a'n co' the co' nhie`u cong nhan tham gia, do do' no' la` quan nhie`u nhie`u-nhie`u, ta tach tha`nh 2 quan he 1-nhie`u.

MaCN (TCN)---->MACN (CNDA)
MaDA (MaDA) -----> MaDA (CNDA)

Vi du CSDL la` :

Trong Bang TCN : TenCN : Nguyen Van A, MaCN : 01
Trong Bang CNDA : K0 co' du lieu doi voi MaCN la` 01
Trong Bang TDA : TenDA : Ti`m kiem tre lac, MaDA : 01

bay gio` mi`nh muon ti`m kiem theo ten cong nhan, ket qua se hien nen cac du an ma` cong nhan do' tham gia, neu ma` cong nhan do' chu*a cap nhat du. a'n thi` cot TenDA (trong gird) se tra'ng.

Mi`nh su dung cau lenh SQL sau :

Select TCN.TenCN, TDA.TenDA From TCN, CNDA, TDA Where TCN.TenCN = "Nguyen Van A" and CNDA.MaCN=TCN.MaCN and TDA.MaDA=CNDA.MaDA thi` ket qua la` 0 record, trong khi ket qua mi`nh mong muon la` 1 record, co`n neu trong ba?ng CNDA co' du lieu la` : MaCN : 01, MaDA : 01 thi` ket qua dung nhu* mi`nh mong muon, vay la` the' na`o de trong truo`ng hop chu*a cap nhat du a'n cho cong nhan thi` ket qua in ra cot ten du a'n de tra'ng.

mrtypn
03-09-2002, 10:35
Hi, Ban khong nen dung phep ket bang ma nen dung left join.Luc truoc tui co' lam cai nay tren 2 table thui , nhung voi 3 table thi chua test thu .Hy vong no' work.

Select TCN.TenCN, TDA.TenDA From TCN Where TCN.TenCN = "Nguyen Van A" left join CNDA on CNDA.MaCN=TCN.MaCN left join TDA on TDA.MaDA=CNDA.MaDA

adprog
04-09-2002, 13:14
tại sao không dùng một combo box chọn mã công nhân, không có control source, trên form con cho liên kết mã công nhân với combo box, như vậy khi cập nhật lại combo thì sẽ hiện ra thông tin các dự án mà công nhân đó tham gia, còn câu lênh SQL hả, mình chưa thể viết được hẹn lần sau sẽ đưa lên, hiện dang online ơ dịch vụ mà

abcIT
04-09-2002, 19:22
hi` hi` mi`nh go~ lon cho^. primary key, voi van de` tren mi`nh co' the du`ng cau truy van na`y de giai quyet :

SELECT TCN.TenCN, TDA.TenDA FROM TDA RIGHT OUTER JOIN (CNDA RIGHT OUTER JOIN TCN ON TCN.MaCN=CNDA.MaCN) ON TDA.MaDA=CNDA.MaDA WHERE TCN.TenCN = "Nguyen Van A"

Nhung bay gio` CSDL cua mi`nh co' them mot bang ghi OldCQ (co quan cu cua moi cong nhan), vi` the' bang TCN co' them mot truong MaOCQ va` bang OldCQ thi` co' 2 truo`ng, thu' 1: MaOCQ (primary key) va` TenCQ. Va` cung nhu* tren co' nhung cong nhan chu*a biet duoc co* quan cu thi` du lieu doi voi cong nhan do trong cot Co Quan Cu bo? tra'ng, mi`nh khong biet giai quyet tiep the' na`o. Mong giup do~.

Tuanic38
16-09-2002, 08:17
Nhìn cách viết câu lệnh của bạn, chắc là lại generate từ Queries của ACCESS ra chứ gì.
Nếu bạn đọc nhiều về SQL thì nó chẳng khó gì đâu. Tuy nhiên cách viết SQL trong các CSDL khác nhau có sự khác nhau cơ bản đó (chẳng hạn về kiểu, cách mở đóng ngoặc, và có một số hàm đặc thù của từng CSDL đó nghen)!!