Truy vấn "tĩnh" là truy vấn vẫn giữ nguyên ở mọi thời điểm. Ví dụ: nút "Thẻ" trên Stackoverflow hoặc nút "7 ngày" trên Digg. Trong ngắn hạn, họ luôn luôn ánh xạ tới một truy vấn cơ sở dữ liệu cụ thể, vì vậy bạn có thể tạo chúng tại thời điểm thiết kế.Cách tạo truy vấn động và an toàn
Nhưng tôi đang cố gắng tìm ra cách thực hiện các truy vấn "động" trong đó người dùng về cơ bản quyết định cách truy vấn cơ sở dữ liệu sẽ được tạo khi chạy. Ví dụ, trên Stackoverflow, bạn có thể kết hợp các thẻ và lọc các bài viết theo những cách bạn chọn. Đó là một truy vấn động mặc dù một truy vấn rất đơn giản vì những gì bạn có thể kết hợp nằm trong thế giới của các thẻ. Một ví dụ phức tạp hơn là nếu bạn có thể kết hợp các thẻ và người dùng. Trước hết, khi bạn có truy vấn động, có vẻ như bạn không thể sử dụng api thay thế để tránh phun sql vì các phần tử truy vấn sẽ phụ thuộc vào những gì người dùng quyết định đưa vào truy vấn. Tôi không thể thấy cách khác để xây dựng truy vấn này ngoài việc sử dụng chuỗi chắp thêm.
Thứ hai, truy vấn có khả năng mở rộng nhiều bảng. Ví dụ: nếu SO cho phép người dùng lọc dựa trên Người dùng và Thẻ, và những điều này có thể sống trong hai bảng khác nhau, việc xây dựng truy vấn sẽ phức tạp hơn một chút so với chỉ thêm cột và mệnh đề WHERE.
Tôi làm cách nào để thực hiện điều gì đó như thế này?
Để đề xuất tóm tắt: Bạn đang sử dụng ngôn ngữ nào để nói chuyện với cơ sở dữ liệu của mình? Bạn đang sử dụng cơ sở dữ liệu nào? –
Cơ sở dữ liệu của bạn rất quan trọng. RDBMS nào? Thứ hai, bạn có sẵn sàng giới hạn không. Bạn có muốn nói rằng bạn chỉ có thể tìm kiếm trên 10 thẻ ... 11 là verboten? –