简体   繁体   English

将两列,不同的表格相乘...一列为空

[英]multiplying two columns, different tables… one column null

In this join query, i am multiplying two columns from different tables, premium & points . 在此联接查询中,我要乘以来自不同表的两列, premiumpoints What i want to happen is if there are no columns joined in the premium table then the multiplier will be 1. 我想发生的事情是,如果premium表中没有连接的列,则乘数将为1。

here is the query 这是查询

 SELECT parent.*,(premiumtable.bid * pointstable.points) as total FROM strings parent
        LEFT JOIN premium premiumtable on parent.sid=premiumtable.sid AND premiumtable.paid='1'
        LEFT JOIN points pointstable on parent.sid=pointstable.`string-id`
        WHERE parent.category=:category AND (parent.submittype='0' OR parent.submittype='3') GROUP BY parent.id ORDER BY total LIMIT 5

So if nothing is joined on the premiumtable instead of premiumtable.bid * pointstable.points it would be 1 * pointstable.points . 因此,如果在premiumtable上没有加入任何东西,而不是premiumtable.bid * pointstable.points ,它将是1 * pointstable.points The premiumtable.bid acts as a multiplier, if it isn't present, i'd want total to equal pointstable.points premiumtable.bid充当乘数,如果不存在,我希望total等于pointstable.points

Use a case statement: 使用case声明:

SELECT parent.*,
       case when premiumtable.bid is null
            then pointstable.points
            else premiumtable.bid * pointstable.points
       end as total 
FROM strings parent
LEFT JOIN premium premiumtable on parent.sid=premiumtable.sid AND premiumtable.paid='1'
LEFT JOIN points pointstable on parent.sid=pointstable.`string-id`
WHERE parent.category=:category
AND (parent.submittype='0' OR parent.submittype='3')
GROUP BY parent.id
ORDER BY total
LIMIT 5

Try using COALESCE : 尝试使用COALESCE

SELECT   parent.*,
         (COALESCE(premiumtable.bid,1) * pointstable.points) as total 
FROM strings parent
LEFT JOIN premium premiumtable 
   on parent.sid=premiumtable.sid AND premiumtable.paid='1'
LEFT JOIN points pointstable 
   on parent.sid=pointstable.`string-id`
WHERE parent.category=:category 
AND (parent.submittype='0' OR parent.submittype='3') 
GROUP BY parent.id 
ORDER BY total LIMIT 5

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 除非为空,否则如何基于一列联接两个表,在这种情况下,应基于两个不同的列联接 - How do you join two tables based on one column unless it's null, in which case join based on two different columns 通过连接一列从不同的表返回两列 - Returning two columns from different tables by joining on one column PostgreSQL联接两个表而没有乘法列 - PostgreSQL join two tables without multiplying columns 将具有不同列的两个表合并为一个 - joining two tables with different columns into one MySQL在一列中加入不同表的列 - MySQL JOIN different tables' columns in one column MYSQL:组合两个不同的表,计算一列的SUM和两列的GROUP BY - MYSQL: Combine two different tables and calculate SUM of one column and GROUP BY two columns 将表中的单个列映射到两个不同表中的两个不同列 - mapping a single column in a table to two different columns in two different tables 使用一个sql更新两个不同表中的列 - Updating a column in two different tables with one sql 基于一个公共列连接具有不同列和格式的两个表-需要显示重复项 - Joining Two Tables With Different Columns and Formats Based on One Common column - Need to Show Duplicates 合并两个具有不同列的表,并在输出中显示null - Union two tables with different columns and display null in the output
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM