【问题标题】:Sql query with multi-level subqueries具有多级子查询的 Sql 查询
【发布时间】:2017-07-11 13:45:58
【问题描述】:

我有一个 SQL 查询,用于从 joomla 网站内的幼儿园存在表单中获取信息,并进行一些数学运算以了解孩子的父母每周应该支付多少,然后将其相加以了解税收收据的多少。

当我只使用一个孩子时,我得到了正确的数量,但是当我添加第二个孩子时,数字不会与两个孩子相加。

这是请求:

SELECT
    SUM(t1.test1) AS t1,
    SUM(t2.test2) AS t2
FROM
(
    SELECT
        (COUNT(josnh_facileforms_records.id) * sal1.salaire1) AS test1,
        josnh_facileforms_subrecords.record
    FROM josnh_facileforms_records,
         josnh_facileforms_subrecords
    LEFT JOIN
    (
        SELECT
            LEFT(josnh_facileforms_subrecords.value, 5) AS salaire1,
            josnh_facileforms_subrecords.record AS records1
        FROM josnh_facileforms_records,
             josnh_facileforms_subrecords
        WHERE josnh_facileforms_records.user_id = [id]
              AND josnh_facileforms_records.form = 24
              AND josnh_facileforms_records.id = josnh_facileforms_subrecords.record
              AND josnh_facileforms_subrecords.name LIKE 'enfant1'
        GROUP BY
            josnh_facileforms_subrecords.record
    ) AS sal1 ON sal1.records1 = josnh_facileforms_subrecords.record
    WHERE josnh_facileforms_records.user_id = [id]
          AND josnh_facileforms_records.form = 24
          AND josnh_facileforms_records.id = josnh_facileforms_subrecords.record
          AND josnh_facileforms_subrecords.name LIKE '%di1'
          AND josnh_facileforms_subrecords.value = 'RG'
    GROUP BY
        josnh_facileforms_subrecords.record
) AS t1,
(
    SELECT
        (COUNT(josnh_facileforms_records.id) * sal2.salaire2) AS test2,
        josnh_facileforms_subrecords.record
    FROM josnh_facileforms_records,
         josnh_facileforms_subrecords
    LEFT JOIN
    (
        SELECT
            LEFT(josnh_facileforms_subrecords.value, 5) AS salaire2,
            josnh_facileforms_subrecords.record AS records2
        FROM josnh_facileforms_records,
             josnh_facileforms_subrecords
        WHERE josnh_facileforms_records.user_id = [id]
              AND josnh_facileforms_records.form = 24
              AND josnh_facileforms_records.id = josnh_facileforms_subrecords.record
              AND josnh_facileforms_subrecords.name LIKE 'enfant2'
        GROUP BY
            josnh_facileforms_subrecords.record
    ) AS sal2 ON sal2.records2 = josnh_facileforms_subrecords.record
    WHERE josnh_facileforms_records.user_id = [id]
          AND josnh_facileforms_records.form = 24
          AND josnh_facileforms_records.id = josnh_facileforms_subrecords.record
          AND josnh_facileforms_subrecords.name LIKE '%di2'
          AND josnh_facileforms_subrecords.value = 'RG'
    GROUP BY
        josnh_facileforms_subrecords.record
) AS t2;

我可以再看看这个吗?

【问题讨论】:

  • 我认为这应该去 CodeReview...
  • 你的意思是两者都没有加起来?你是说(sum(t1.test1) + sum(t2.test2)) as Grand_Total
  • 嗯,是的,对不起,我的意思是结束数字不加起来 Kid1 -> sum(t1.test1) 单独在查询中单独给出 189.66 在我的测试中这是正确的数字。但是当我添加 Kid2 部分时,我得到:kid1 = 379.3199999999999994 Kid2 = 401.29999999999999995 很奇怪吧??
  • 顺便说一句,这部分是指 joomla 用户 ID,所以显然我在发布之前更改了值:josnh_facileforms_records.user_id = [id]
  • 查看结果数字后,我才意识到它只是用尾随浮点数将结束数字加倍。显然请求有问题,但我似乎无法解决问题。

标签: sql subquery multi-level


【解决方案1】:

好吧,这是一个新手问题,我太专注于子查询,以至于忘记将 FROM 标记中的子查询与左标记链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多