Đầu tiên chúng ta sẽ xem cấu trúc của 2 bảng qua đã nhé:
Bảng PLOT
Bảng tham chiếu các trường thuộc tính trong bảng PLOT
Bảng FOREST_TYPE
- Forest_type_code: Mã loại đất loại rừng
- Forest_type_def: Tên loại đất loại rừng
- Abbreviation: ký hiệu LĐLR
- Lang: ngôn ngữ
Chú ý ở bảng FOREST_TYPE, trường khóa của bảng này là Forest_type_code + Lang
Dữ liệu trong bảng FOREST_TYPE, ứng với mỗi một mã LĐLR luôn tồn tại 2 tên bằng Tiếng Việt và Tiếng Anh.
Giờ ta sẽ dùng 1 lệnh select để liên kết 2 bảng PLOT và FOREST_TYPE xem nhé:
Select a.commune_code as maxa,
a.compt_code as tieukhu,
a.sub_compt_code as khoanh,
a.plot_code as lo,
a.area as dientich,
a.forest_type_code as maldlr,
a.compt_code as tieukhu,
a.sub_compt_code as khoanh,
a.plot_code as lo,
a.area as dientich,
a.forest_type_code as maldlr,
a.actor_id as machurung,
b.forest_type_def as tenLDLR
From PLOT a inner join FOREST_TYPE b on a.forest_type_code=b.forest_type_code
order by a.commune_code, a.compt_code, a.sub_compt_code, a.plot_code
limit 1000
Thử dùng pgAdmin3 chạy xem nhé!
bảng kết quả cho thấy rằng cứ 1 lô rừng nó sẽ có 2 kết quả vì thế chúng ta phải khống chế cho nó ra một kết quả Tiếng Việt thôi, bằng cách cho thêm điều kiện vào.
Lệnh sẽ được viết lại như sau:
Select a.commune_code as maxa,
a.compt_code as tieukhu,
a.sub_compt_code as khoanh,
a.plot_code as lo,
a.area as dientich,
a.forest_type_code as maldlr,
a.compt_code as tieukhu,
a.sub_compt_code as khoanh,
a.plot_code as lo,
a.area as dientich,
a.forest_type_code as maldlr,
a.actor_id as machurung,
b.forest_type_def as tenLDLR, b.Abbreviation as kyhieuLN
From PLOT a inner join FOREST_TYPE b on a.forest_type_code=b.forest_type_code
where b.lang='vi'
order by a.commune_code, a.compt_code, a.sub_compt_code, a.plot_code
limit 1000
thêm vào câu lệnh select biểu thức điều kiện sau từ khóa where b.lang='vi'. Vì dữ liệu của trường lang là chuổi ký tự (nhận giá trị hoặc là 'vi' hoặc là 'en') nên giá trị so sánh phải được đặt trong cặp dấu nháy đơn.
Nếu là b.lang=vi là sai nhé, báo lổi ngay!
Nhắc lại chổ Limit 1000 là mình lấy 1000 dòng kết quả đầu tiên cho nó nhanh, chứ khi mọi người làm thật nhớ bỏ dòng đó đi không là thiếu kết quả đấy.
OK, đưa vào pgAdmin3 xem nó trả về cái gì?
Đẹp rồi, bỏ đường các dòng có LĐLR English
và thêm vào trường ký hiệu lâm nghiệp (mình đặt vậy thôi, ai thích đặt tên gì thì đặt)
Nhìn vào bảng kết quả thì có thể thấy các trường trong ô màu đỏ là của bảng PLOT (lô rừng), màu xanh là của bảng FOREST_TYPE (Loại đất loại rừng). chúng được liên kết với nhau thông qua trường forest_type_code (mã LĐLR)
0 nhận xét:
Post a Comment