mysql - 将子查询结果添加到查询中

标签 mysql sql

我必须遵循子查询

    SELECT
    (
        SELECT SUM( `total_amount` )
        FROM `civicrm_contribution`
        WHERE `currency` = 'PCT'
        AND `contact_id` = ( SELECT `id`FROM `civicrm_contact`
        WHERE `first_name` = '' 
        UNION ALL
        SELECT `contact_id` FROM `civicrm_membership` 
        WHERE `source` = '')   
    )

-
(
    SELECT SUM(`fee_amount`)
    FROM `civicrm_participant`
    WHERE `fee_level`='puncte' 
    AND `contact_id` = (SELECT `id` FROM `civicrm_contact` 
    WHERE  `first_name` =''
    UNION ALL
    SELECT `contact_id` FROM `civicrm_membership` 
    WHERE `source` = '') 
)As RemainingPoints

我不知道如何将结果添加到以下查询

SELECT  `civicrm_contact`.first_name,`civicrm_membership`.start_date, `civicrm_membership`.end_date, `civicrm_membership`.source FROM `civicrm_contact`, `civicrm_membership` WHERE `civicrm_contact`.id = `civicrm_membership`.contact_id  AND `civicrm_membership`.source =''
UNION ALL    
SELECT  `civicrm_contact`.first_name,`civicrm_membership`.start_date, `civicrm_membership`.end_date, `civicrm_membership`.source FROM `civicrm_contact`, `civicrm_membership` WHERE `civicrm_contact`.id = `civicrm_membership`.contact_id  AND `civicrm_contact`.first_name ='test1'

我希望在查询末尾添加“RemainingPoints”

名字;开始日期;结束日期;来源; “剩余积分”

最佳答案

SELECT *
FROM (SELECT `civicrm_contact`.first_name,`civicrm_membership`.start_date,  `civicrm_membership`.end_date, `civicrm_membership`.source FROM `civicrm_contact`, `civicrm_membership` WHERE `civicrm_contact`.id = `civicrm_membership`.contact_id  AND `civicrm_membership`.source =''
      UNION ALL    
      SELECT  `civicrm_contact`.first_name,`civicrm_membership`.start_date, `civicrm_membership`.end_date, `civicrm_membership`.source FROM `civicrm_contact`, `civicrm_membership` WHERE `civicrm_contact`.id = `civicrm_membership`.contact_id  AND `civicrm_contact`.first_name ='test1'
     ) x
JOIN (SELECT (
        SELECT SUM( `total_amount` )
        FROM `civicrm_contribution`
        WHERE `currency` = 'PCT'
        AND `contact_id` = ( SELECT `id`FROM `civicrm_contact`
        WHERE `first_name` = '' 
        UNION ALL
        SELECT `contact_id` FROM `civicrm_membership` 
        WHERE `source` = '')   
        )
        -
        (
        SELECT SUM(`fee_amount`)
        FROM `civicrm_participant`
        WHERE `fee_level`='puncte' 
        AND `contact_id` = (SELECT `id` FROM `civicrm_contact` 
        WHERE  `first_name` =''
        UNION ALL
        SELECT `contact_id` FROM `civicrm_membership` 
        WHERE `source` = '') 
        ) As RemainingPoints) y

关于mysql - 将子查询结果添加到查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680219/

相关文章:

mysql - 外表中是否必须有主键?

php - 从多个表中获取图像

sql - append 到假脱机文件 Oracle

sql - 从表中选择连续范围

java - 检测编号表中缺失的记录

sql - SQL 分页比获取所有数据花费的时间更长(x15~x20)是否正常?

mysql - 根据状态查询唯一记录

php - PDO MySQL 如何处理预处理语句中的参数?

php - 安装 MySQLi 显示它将禁用 MySQL,这会影响我当前的代码吗?

php - 从 MySQL 触发器调用 PHP 脚本