Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cơ sở dữ liệu công thức, tìm kiếm theo thành phần

Vì một công thức có thể sử dụng nhiều thành phần và bạn đang tìm kiếm công thức sử dụng một hoặc nhiều thành phần được chỉ định, bạn nên sử dụng DISTINCT từ khóa để ngăn kết quả trùng lặp trong đó công thức sử dụng nhiều hơn một thành phần từ danh sách được chỉ định. Ngoài ra, bạn có thể sử dụng IN mệnh đề để lọc trên nhiều ID thành phần.

select DISTINCT r.name
from 
    recipes r
    inner join ingredient_index i
    on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5);

Ngoài ra, nếu bạn đang tìm kiếm công thức nấu ăn sử dụng tất cả các thành phần được chỉ định trong danh sách, thì bạn có thể nhóm kết quả theo tên công thức và kiểm tra xem số lượng bản ghi có giống với số lượng nguyên liệu trong danh sách của bạn hay không.

select r.name
from 
    recipes r
    inner join ingredient_index i
    on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5)
GROUP BY r.name
HAVING COUNT(*) = 2

Điều này giả định rằng sẽ không có các bản ghi trùng lặp với cùng một bộ (công thức_id, thành phần_id) (được đảm bảo tốt hơn với ràng buộc DUY NHẤT).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để truy cập kết nối mysqli trong một lớp khác trên trang khác?

  2. Truy cập đầu ra thủ tục được lưu trữ MySQL trong Zend Framework 2

  3. Đầu ra MYSQL ở định dạng cây HOẶC Thêm cấp độ (Parent-Child)

  4. Tối ưu hóa cơ sở dữ liệu MYSQL bằng cách sử dụng lập chỉ mục

  5. tạo bảng mysql nếu nó không tồn tại