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

Các giá trị loại trừ lẫn nhau trong SQL

Nếu tôi hiểu đúng câu hỏi của bạn, thì products bảng sẽ có giá mặc định và product_prices bảng sẽ có bất kỳ giá nào khác.

Bạn muốn biết nơi giá mặc định đang được sử dụng, nghĩa là không có giá nào khác. Đối với điều này, hãy sử dụng left outer join :

SELECT p.*, coalesce(pp.price, p.default_price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId
WHERE pp.price = GIVENPRICE or pp.price is null

Dựa trên nhận xét của bạn, bạn đang lưu trữ giá mặc định trong các bản ghi với id doanh nghiệp là NULL. Trong trường hợp này, tôi sẽ thực hiện hai phép nối vào bảng giá:

SELECT p.*, coalesce(pp.price, defpp.price)
FROM products p LEFT OUTER JOIN 
     products_prices pp
     ON p.id = pp.productId and pp.price = GIVENPRICE left outer join
     products_prices defpp
     on p.id = defpp.productId and defpp.businessId is NULL

Lần tham gia đầu tiên nhận được giá khớp với giá đã cho. Thứ hai nhận giá mặc định. Kết quả đầu tiên được sử dụng, nếu có, nếu không kết quả thứ hai được sử dụng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gặp khó khăn trong việc xây dựng truy vấn MySQL

  2. Lệnh gọi Hibernate session.beginTransaction () và Mysql Bắt đầu giao dịch

  3. Giỏ hàng Zen:Tôi muốn truy vấn từ một danh mục cụ thể tên sản phẩm, giá cả, hình ảnh, mô tả và thuộc tính của nó

  4. MySQL tối ưu hóa INSERT tốc độ bị chậm lại do các chỉ số

  5. Làm cách nào để giới hạn số hàng cho mỗi giá trị trường trong SQL?