Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL使用不同的行连接相同的列_Mysql - Fatal编程技术网

MySQL使用不同的行连接相同的列

MySQL使用不同的行连接相同的列,mysql,Mysql,我有两个与项目相关的表,如下所示 表“旧_项目” 表,“新项目” 02)如果一个项目在新项目表中有旧项目号和status=“revied”,则金额字段应更改如下: 例如:- a) 项目编号004的金额=旧项目表中项目编号001的金额-新项目表中项目编号004的金额 b) 项目编号006的金额=旧项目表中项目编号003的金额-新项目表中项目编号006的金额 03)之后,通过连接两个表,所需输出应如下所示: +------------+-----------+--------------+-----

我有两个与项目相关的表,如下所示

表“旧_项目”

表,“新项目”

02)如果一个项目在新项目表中有旧项目号和status=“revied”,则金额字段应更改如下:

例如:- a) 项目编号004的金额=旧项目表中项目编号001的金额-新项目表中项目编号004的金额

b) 项目编号006的金额=旧项目表中项目编号003的金额-新项目表中项目编号006的金额

03)之后,通过连接两个表,所需输出应如下所示:

+------------+-----------+--------------+----------+
| project_no |  project  |    amount    |  status  |
+------------+-----------+--------------+----------+
|        001 | project1  |   75,000.00  | original |
|        004 | project4  |   50,000.00  | revised  |
|        003 | project3  |  150,000.00  | original |
|        006 | project6  |   70,000.00  | revised  |
+------------+-----------+--------------+----------+
04)因此,我使用了以下查询

SELECT
    project_no,
    project,
    old_project.amount - new_project.amount,
    status
FROM
    new_project
JOIN
    old_project ON old_project.project.no = new_project.project.no
WHERE
    project_no IN (SELECT project_no
                   FROM new_project
                   WHERE status="revised") 
05)但未获得所需的输出。我不明白我出了什么问题。有人能帮我吗?

  • 您只需从
    新项目
    表向
    项目编号
    上的
    旧项目
    表执行
    左联接
  • 现在,我们可以使用表达式,有条件地计算数量值
  • 如果有相应的旧项目(旧项目金额),我们可以计算差额;否则使用新的项目金额
请尝试以下查询:

SELECT
  np.project_no, 
  np.project, 
  CASE 
    WHEN op.amount IS NOT NULL THEN op.amount - np.amount 
    ELSE np.amount
  END AS amount, 
  np.status 
FROM new_project AS np 
LEFT JOIN old_project AS op ON op.old_project_no = np.project_no 

@Madhur Bhaiya。不,这是一个简单的错误。不是项目10和项目11。这是project4和Project6为什么在输出表中没有project2和project5?此外,项目4和项目6的金额与描述的计算不匹配。请修复所需的输出,以便人们不会混淆,项目4的金额目标(基于您的描述)应为
75000.00-50000.00=25000.00
,而不是
50000.00
。您是正确的。但在旧项目表中执行的金额扣减。新的项目表是conceptual@MCITTrends你可以做“自动加入”。将
新项目
替换为
旧项目
(在同一个表之间左连接)。@MCITTrends您的问题根本没有提到这个细节,所有内容都在同一个表中。您是正确的。你是自由职业者吗。我们有一些codeigniter mysql项目要做。如果是,请将您的详细信息发送给我mcodeit@gmail.com
SELECT
    project_no,
    project,
    old_project.amount - new_project.amount,
    status
FROM
    new_project
JOIN
    old_project ON old_project.project.no = new_project.project.no
WHERE
    project_no IN (SELECT project_no
                   FROM new_project
                   WHERE status="revised") 
SELECT
  np.project_no, 
  np.project, 
  CASE 
    WHEN op.amount IS NOT NULL THEN op.amount - np.amount 
    ELSE np.amount
  END AS amount, 
  np.status 
FROM new_project AS np 
LEFT JOIN old_project AS op ON op.old_project_no = np.project_no