sql >> Databasteknik >  >> RDS >> Mysql

Ömsesidigt uteslutande värden i SQL

Om jag förstår din fråga rätt, products tabellen skulle ha standardpriset och product_prices bord skulle ha något annat pris.

Du vill veta var standardpriset används, vilket innebär att det inte finns några andra priser. Använd en left outer join för detta :

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

Baserat på din kommentar lagrar du standardpriserna i poster med företags-ID:t NULL. I det här fallet skulle jag göra två kopplingar till pristabellen:

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

Den första anslutningen får det pris som matchar det givna priset. Den andra får standardpriset. Det första resultatet används, om det finns, annars används det andra.




  1. Ange uttryckligen en cells datatyp som text för talvärden

  2. Ny MariaDB AX-version med MariaDB ColumnStore 1.1.3 GA

  3. hur kontrollerar jag att HikariCP-anslutningspooling fungerar eller inte i Java?

  4. Hur man formaterar SQLite-frågeresultat i TCL-läge