Sức mạnh thực sự của CSDL quan hệ nằm ở khả năng truy xuất và phân tích dữ liệu một cách nhanh chóng và chính xác bằng cách thực hiện các truy vấn. Truy vấn cho phép lấy thông tin từ một hoặc nhiều bảng dựa trên điều kiện tìm kiếm bạn đã định nghĩa.
Trong bài học này bạn sẽ học cách để tạo truy vấn trên 1 bảng đơn giản và truy vấn trên nhiều bảng trong Access 2016.
Truy vấn là gì?
Truy vấn là cách tìm kiếm và biên dịch dữ liệu từ một hoặc nhiều bảng. Thực hiện truy vấn cũng giống như hỏi một câu hỏi chi tiết về CSDL. Khi tạo truy vấn trong Access, bạn đang xác định các điều kiện tìm kiếm cụ thể để tìm chính xác dữ liệu mình cần. Truy vấn mạnh hơn rất nhiều so với các tìm kiếm hay bộ lọc đơn giản mà chúng ta thường sử dụng để tìm kiếm dữ liệu trong một bảng. Điều này là do truy vấn có thể thu thập thông tin từ nhiều bảng. Ví dụ, khi thực hiện tìm kiếm trên bảng khách hàng để tìm tên của một khách hàng hoặc lọc bảng đơn đặt hàng để xem các đơn đặt hàng trong tuần vừa qua, bạn chỉ có được những thông tin riêng lẻ, không cho xem cả khách hàng và đơn đặt hàng cùng lúc. Nhưng nếu thực hiện truy vấn thì có thể tìm tên, số điện thoại của mọi khách hàng đã mua hàng trong tuần qua. Truy vấn được thiết kế tốt có thể cung cấp thông tin chính xác và hữu ích mà bạn không thể tìm ra bằng cách kiểm tra hay nhìn vào dữ liệu trong bảng. Khi thực hiện một truy vấn, kết quả được trả về dưới dạng bảng, nhưng khi thiết kế bạn có thể sử dụng một cách xem khác, gọi là Query Design và nó cho phép xem cách các truy vấn kết hợp với nhau như thế nào.
Truy vấn trên một bảng
Hãy làm quen với quá trình xây dựng truy vấn bằng cách xây dựng truy vấn đơn giản nhất có thể: truy vấn trên một bảng. Trong ví dụ này sẽ thực hiện truy vấn trên bảng Customer. Giả sử tiệm bánh của chúng ta đang có một sự kiện đặc biệt và chúng ta muốn mời khách hàng sống gần đó vì họ có nhiều khả năng sẽ đến nhất. Điều này có nghĩa là cần phải xem danh sách tất cả khách hàng đang sống gần tiệm bánh và chỉ mời những khách hàng đó. Chúng ta muốn tìm khách hàng sống ở thành phố Raleigh, vì vậy chúng ta sẽ tìm kiếm 'Raleigh' trong cột City. Một số khách hàng sống ở ngoại ô khá gần, và chúng ta cũng muốn mời họ nữa. Chúng ta sẽ thêm mã vùng của họ, 27513, làm tiêu chí khác. Nếu bạn nghĩ rằng điều này nghe có vẻ giống như áp dụng một bộ lọc, bạn nói đúng. Truy vấn trên một bảng thực chất chỉ là bộ lọc nâng cao được áp dụng cho một bảng. Để tạo truy vấn trên một bảng bạn làm như sau: Click vào tab Create > nhóm Queries > Query Design:
Access sẽ chuyển sang chế độ xem Query Design. Trong Show Table, chọn bảng muốn truy vấn, ở đây là Customers.
Chọn bảng muốn tạo truy vấn Chọn Add > Close. Bảng đã chọn sẽ xuất hiện như một cửa sổ nhỏ trong khung Object Relationship. Trong cửa sổ bảng, nhấp đúp chuột vào tên của các trường bạn muốn xuất hiện trong truy vấn. Chúng sẽ được thêm vào lưới thiết kế ở phần dưới cùng của màn hình. Ở đây, chúng ta muốn gửi thư mời tới những khách hàng sống ở khu vực nhất định, vì vậy sẽ chọn First Name, Last Name, Street Address, City, và Zip Code.
Chọn trường muốn xuất hiện trong truy vấn Thiết lập tiêu chí tìm kiếm bằng cách nhấp vào ô trong hàng Criteria: của mỗi trường bạn muốn lọc. Nhập tiêu chí vào nhiều hơn một trường trong hàng này sẽ thiết lập truy vấn của bạn bao gồm các kết quả đáp ứng được tất cả các tiêu chí. Nếu bạn muốn đặt nhiều tiêu chí nhưng không cần bản ghi phải đáp ứng tất cả chúng, hãy nhập tiêu chí đầu tiên trong hàng Criteria: và tiêu chí bổ sung trong hàng or: và hàng bên dưới nó. Vì cần tìm khách hàng sống ở Raleigh hoặc có mã vùng 27513, nên sẽ nhập “Raleigh” vào trường City và “27513” trong hàng or: của trường ZIP Code. Dấu ngoặc kép sẽ tìm kiếm các trường này để cho kết quả chính xác.
Thiết lập tiêu chí cho truy vấn Sau khi thiết lập tiêu chí tìm kiếm, thực hiện truy vấn bằng cách nhấp vào lệnh Run trên tab Design.
Kết quả truy vấn sẽ hiển thị trong khung Datasheet, giống như một bảng. Nếu muốn, bạn có thể lưu lại kết quả này bằng cách nhấp vào lệnh Save trên Quick Access Toolbar.
Kết quả truy vấn hiển thị dưới dạng bảng
Tạo truy vấn Access trên nhiều bảng
Truy vấn trên nhiều bảng sẽ phức tạp hơn truy vấn trên một bảng, nó cho phép trả lời những câu hỏi phức tạp hơn. Truy vấn có thể khó hiểu hoặc khó tạo nếu bạn không có ý tưởng tốt về những gì mình đang cố gắng tìm và cách tìm kiếm nó. Truy vấn trên một bảng có thể đơn giản để tạo nhưng với những truy vấn trên nhiều bảng, bạn cần có thời gian lập kế hoạch truy vấn từ trước.
Lập kế hoạch truy vấn:
- Khi lập kế hoạch truy vấn trên nhiều bảng, bạn nên thực hiện 4 bước sau:
- Xác định chính xác những gì mình muốn biết. Nếu có thể hỏi CSDL những câu hỏi thì câu hỏi đó là gì? Việc xây dựng truy vấn phức tạp hơn là hỏi một câu hỏi, nhưng biết chính xác câu hỏi bạn muốn là vô cùng thiết yếu để xây dựng những truy vấn hữu ích.
- Xác định mọi loại thông tin muốn đưa vào kết quả truy vấn. Những trường nào chứa thông tin này?
- Xác định vị trí của các trường muốn có trong truy vấn. Bảng nào chứa chúng?
- Xác định các tiêu chí tìm kiếm thông tin cần đáp ứng trong từng trường. Hãy nghĩ về câu hỏi bạn đặt ra ở bước đầu tiên. Những trường nào cần để tìm kiếm thông tin cụ thể? Những thông tin đang tìm kiếm? Làm thế nào để tìm thấy chúng?
- Quá trình này có vẻ “sách vở” và hơi trừu tượng lúc đầu, nhưng nếu trải qua rồi bạn sẽ thấy việc lập kế hoạch cho truy vấn trên nhiều bảng sẽ giúp xây dựng truy vấn dễ dàng hơn.
- Dưới đây là ví dụ về kế hoạch truy vấn:
Giờ sẽ thử lập kế hoạch truy vấn cho CSDL của một tiệm bánh. Bạn hãy đọc từng bước quy trình lập kế hoạch, hãy suy nghĩ xem từng phần của quy trình này có thể áp dụng cho truy vấn bạn đang tạo như thế nào nhé. Bước 1: Xác định câu hỏi muốn hỏi CSDL tiệm bánh chứa nhiều khách hàng, vài người trong số họ chưa bao giờ đặt hàng nhưng họ có trong CSDL vì đã đăng ký nhận mail thông báo. Hầu hết họ sống trong thành phố, có vài người sống bên ngoài thị trấn hoặc ở bang khác. Giờ chúng ta muốn những khách hàng ở ngoài thị trấn đã đặt hàng trước đây quay lại và đặt hàng, vì thế, chúng ta sẽ gửi cho họ một phiếu giảm giá. Danh sách khách hàng này không được có những khách hàng sống quá xa cửa hàng, vì họ có thể sẽ không quay lại chỉ với phiếu giảm giá. Vì thế, chúng ta muốn tìm những người không sống ở thành phố, nhưng vẫn trong khu vực lân cận.
Khoanh vùng dữ liệu muốn lấy Tóm lại, câu hỏi chúng ta muốn đặt ra là: Khách hàng nào đang sống ở khu vực gần cửa hàng, bên ngoài thành phố và đã từng đặt bánh trước đây? Bước 2: Xác định thông tin cần lấy Chúng ta cần tên khách hàng, thông tin liên hệ của họ: Địa chỉ, số điện thoại, email. Nhưng làm sao để biết họ đã đặt hàng bao giờ chưa? Mỗi bản ghi của một đơn hàng sẽ xác định khách hàng đã đặt hàng. Nếu bao gồm cả ID đơn đặt hàng thì có thể thu hẹp danh sách khách hàng lại thành những người đã đặt hàng trước đó.
Xác định thông tin cần lấy Bước 3: Xác định bảng chứa thông tin cần lấy Để viết truy vấn, bạn cần quen thuộc với nhiều bảng khác nhau trong CSDL của mình. Ở đây, chúng ta thấy rằng thông tin khách hàng cần có nằm trong các trường của bảng Customers. Số ID của đơn đặt hàng nằm trong một trường của bảng Orders. chúng ta chỉ cần lấy hai bảng này là có đủ thông tin mình cần.
Xác định các bảng có thông tin cần lấy Bước 4: Xác định các tiêu chí mà truy vấn nên tìm kiếm Khi bạn đặt tiêu chí cho một trường trong truy vấn, về cơ bản bạn sẽ áp dụng một bộ lọc cho phép truy vấn trích xuất chỉ những thông tin phù hợp với tiêu chí tìm kiếm. Xem lại danh sách các trường chúng ta đưa vào truy vấn này. Làm thế nào và ở đâu chúng ta có thể đặt tiêu chí tìm kiếm có thể tạo ra câu trả lời tốt nhất cho câu hỏi.
Vì không muốn lấy những khách hàng sống ở thị trấn Raleigh, vì vậy, ta cần tiêu chí sẽ trả lại tất cả các bản ghi ngoại trừ bản ghi có trường City là Raleigh. Vì không muốn lấy khách hàng sống quá xa, chỉ lấy khách hàng sống trong cùng vùng, nên sẽ dùng mã vùng điện thoại của vùng là 919. Thêm tiêu chí chỉ trả lại bản ghi có mục trong trường số điện thoại bắt đầu với 919, sẽ đảm bảo chỉ gửi phiếu giảm giá đến những khách hàng đủ gần để họ quay lại tiệm bánh và sử dụng nó. Chúng ta không đặt tiêu chí cho trường ID của đơn đặt hàng hoặc bất kỳ trường nào khác vì cần phải xem xét tất cả các đơn đặt hàng của những người đáp ứng hai tiêu chí trên.
Kết nối các bảng trong truy vấn:
Điều cuối cùng cần cân nhắc khi thiết kế truy vấn là cách bạn liên kết, hay nối các bảng đang làm việc với nhau. Khi thêm hai bảng vào truy vấn của Access, đây là những gì bạn sẽ thấy trong khung Object Relationship:
Các bảng xuất hiện trong khung Object Relationship Đường kết nối hai bảng được gọi là đường nối. Bạn có nhìn thấy mũi tên trên đường nối không? Điều này là do nó chỉ ra thứ tự truy vấn tìm dữ liệu từ hai bảng. Trong hình, mũi tên từ trái sang phải nghĩa là truy vấn sẽ xem dữ liệu trong bảng bên trái trước, sau đó tìm dữ liệu trong bảng bên phải có liên quan đến các bản ghi đã tìm thấy ở bảng bên trái. Các bảng không phải lúc nào cũng được kết hợp theo cách này. Đôi khi Access sẽ nối chúng từ phải sang trái. Trong cả hai trường hợp, bạn đều có thể thay đổi hướng liên kết để đảm bảo truy vấn có chứa thông tin chính xác. Hướng liên kết có thể ảnh hưởng đến thông tin mà truy vấn của bạn lấy được. Để hiểu điều này có ý nghĩa gì, hãy xem xét truy vấn mà chúng ta đang thiết kế. Chúng ta cần xem khách hàng đã đặt hàng, vì vậy bảng Customers và Orders đã được thêm vào, đây là những dữ liệu có trong hai bảng này:
Xem xét mối liên kết giữa hai bảng Bạn nhận thấy điều gì khi nhìn vào những danh sách này? Trước hết, mỗi đơn đặt hàng trong bảng Orders đều được liên kết với ai đó trong bảng Customers - người đã mua hàng. Tuy nhiên, khi nhìn vào bảng Customers, bạn sẽ thấy khách hàng đã đặt nhiều đơn hàng được liên kết đến nhiều đơn đặt hàng và những người chưa bao giờ đặt hàng thì không liên kết đến đơn đặt hàng nào cả. Như vậy, ngay cả khi hai bảng được liên kết với nhau vẫn có những bản ghi trong một bảng không có mối quan hệ với bất kỳ bản ghi nào trong bảng kia. Vậy điều gì sẽ xảy ra khi Access cố gắng chạy truy vấn của chúng ta với liên kết hiện tại là từ trái sang phải? Nó lấy mọi bản ghi từ trái trang phải: bảng Customers.
Access lấy thông tin từ bảng bên trái Rối sẽ lấy mọi bản ghi từ bảng bên phải có quan hệ với một bản ghi mà Access đã lấy ra từ bảng bên trái.
Access lấy thông tin từ bảng bên phải Vì liên kết bắt đầu với bảng Customers, truy vấn sẽ lấy những bản ghi của mọi khách hàng, bao gồm cả những khách hàng chưa từng đặt hàng. Những thông tin này nhiều hơn cái ta cần, ta chỉ muốn xem bản ghi của khách hàng đã đặt hàng. May mắn thay, chúng ta có thể khắc phục vấn đề này bằng cách thay đổi hướng của liên kết. Nếu chúng ta liên kết hai bảng từ phải sang trái, Access ban đầu sẽ lấy đơn đặt hàng từ bảng bên phải: bảng Orders:
Đổi hướng liên kết giữa hai bảng Rồi Access sẽ tìm và trích xuất những bản ghi ở bảng bên trái (Customers) của khách hàng có liên kết với đơn hàng trong bảng Orders.
Access đổi chiều lấy dữ liệu giữa hai bảng Bây giờ, chúng ta đã có chính xác thông tin mình cần: Tất cả khách hàng đã đặt hàng. Như bạn thấy, chúng ta phải liên kết hai bảng theo đúng hướng để có được thông tin mình muốn. Đến đây, chúng ta đã hiểu được hướng liên kết nào cần sử dụng và sẵn sàng để xây dựng truy vấn.
Tạo truy vấn nhiều bảng
Chúng ta đã lên xong kế hoạch truy vấn và sẵn sàng để thiết kế, chạy nó. Nếu bạn cũng đã tạo kế hoạch của riêng mình thì hãy chắc chắn tham chiếu chúng thường xuyên trong quá trình thiết kế truy vấn này nhé. Để tạo truy vấn trên nhiều bảng Access bạn làm như sau: Nhấp vào tab Create > Query Design.
Trong hộp thoại xuất hiện, chọn bảng muốn có trong truy vấn và nhấp vào Add. Bạn có thể nhấn và giữ phím Ctrl để chọn nhiều hơn một bảng. Ở đây, chúng ta chọn bảng Customers và Orders như trong kế hoạch.
Bảng sẽ xuất hiện trong khung Object Relationship, được kết nối bằng đường liên kết. Nhấp đúp chuột vào phần đường kẻ nhỏ hơn trong đường liên kết giữa hai bảng để sửa hướng liên kết.
Trong hộp thoại Join Properties, chọn hướng kết nối, ở đây ta chọn 3 vì muốn liên kết từ phải sang trái.
Trong cửa sổ table, nhấp đúp vào trường muốn đưa vào truy vấn. Chúng sẽ được thêm vào lưới thiết kế ở phần dưới cùng màn hình. Trong ví dụ của chúng ta thì sẽ bao gồm hầu hết các trường của bảng Customers: First Name, Last Name, Street Address, City, State, Zip Code, Phone Number và ID từ bảng Orders.
Thiết lập tiêu chí tìm kiếm bằng cách nhập tiêu chí mong muốn vào hàng tiêu chí của mỗi trường. Ở đây, ta cần đặt hai tiêu chí: Not in ('Raleigh') trong trường City và Like ('919*') trong trường Phone Number. Điều này giúp tìm khách hàng không sống ở Raleigh nhưng sống trong vùng có mã số điện thoại là 919.
Sau khi thiết lập tiêu chí tìm kiếm, chạy truy vấn bằng cách nhấp vào Run trên tab Design.
Kết quả truy vấn sẽ được hiển thị trong Datasheet, giống như một bảng. Nếu muốn, bạn có thể lưu lại kết quả này bằng cách nhấp vào Save trên Quick Access Toolbar.
Bây giờ bạn đã biết cách để tạo truy vấn đơn giản nhất trên một bảng cũng như tạo truy vấn trên nhiều bảng. Trong bài tiếp theo, chúng ta sẽ nói về các tùy chọn thiết kế truy vấn khác mà có thể làm cho truy vấn của bạn mạnh mẽ hơn nữa. Bài tiếp: Các tùy chọn tạo truy vấn dữ liệu trong Access 2016 Bài trước: Làm việc với dữ liệu trong Access 2016
Nguồn : http://quantrimang.com/tao-truy-van-du-lieu-trong-access-2016-tu-don-gian-den-phuc-tap-142998