Mysql
 sql >> база данни >  >> RDS >> Mysql

Взаимно изключващи се стойности в SQL

Ако разбирам въпроса ви правилно, products таблицата ще има цената по подразбиране и product_prices масата ще има друга цена.

Искате да знаете къде се използва цената по подразбиране, което означава, че няма други цени. За това използвайте 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
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

Първото присъединяване получава цената, съответстваща на дадената цена. Вторият получава цената по подразбиране. Използва се първият резултат, ако е налице, в противен случай се използва вторият.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL + htaccess mod_rewrite?

  2. Как да вмъкна пространствена точка на mysql с yii модел?

  3. MySQL Зареждане на файл с данни

  4. InnoDB:Грешка номер 23 на операционната система във файлова операция

  5. Намерено несъответствие на типа Scala Spark Единица, задължителна rdd.RDD