添加两个变量,其中包含来自同一数据库的两个不同表的值

Posted

技术标签:

【中文标题】添加两个变量,其中包含来自同一数据库的两个不同表的值【英文标题】:Adding two variables which contain the values from two different tables of same database 【发布时间】:2018-01-17 17:58:44 【问题描述】:

我们可以从同一个数据库和相同数据类型的两个不同表中添加两个 select sql 查询。这两个查询是在满足 where 条件后从表中选择唯一单元格。现在我想总结这两个具有相同数据类型(即浮点类型)的查询。如何进行加法操作: 例如:$sql=1 和 $sqlNew=2... 我想要 $add=$sql+$sqlNew=3

$sql = "SELECT num1 FROM tech WHERE name1='dsf'"; //Selecting a particular cell from table tech
$sqlNew = "SELECT num2 FROM technew WHERE name2='asd'"; //Selecting a particular cell from table technew
$add = $sql + $sqlNew; // Can this operation be perfromed?

想要从两个不同的表格中添加单元格并希望将其保存在一个新变量中。 请让我知道如何执行上述操作。我是 sql 新手。 这是我的完整代码:

    <html>
<body>

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "sample";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
 
$add="SELECT (tech.num1 + technew.num2) as total FROM tech, technew WHERE tech.name1 = 'def' AND technew.name2 = 'asd'"; 
$result = mysqli_query($conn, $add); 
$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
echo $row['total']; 
$sql4 = "INSERT INTO finaladdition (id, finalAddTotal ) VALUES (NULL,'$row[total]')";
$conn->close();
?> 
</body>
</html>

【问题讨论】:

name1 和 name2 在这些表中是唯一的吗?如果没有,这些查询中的每一个都可能返回多行,您的问题将需要更多解释来说明应该如何处理。如果是这样,它应该很容易。 删除 INSERT 查询中 $row['total'] 周围的单引号。这是一个不需要引号的数字。 @JayBlanchard 非常感谢您提供宝贵的意见...现在此代码运行良好,没有错误,我可以将值存储在数据库中...感谢您分享您的知识... 【参考方案1】:

您可以只执行 JOIN(在示例中隐含 INNER JOIN)查询:

SELECT (a.num1 + b.num2) as total
FROM tech a, technew b
WHERE a.name1 = 'def'
AND b.name2 = 'asd'

根据更多信息,您应该这样做:

$add="SELECT (tech.num1 + technew.num2) as total FROM tech, technew WHERE tech.name1 = 'def' AND technew.name2 = 'asd'"; 
$result = mysqli_query($conn, $add); 
$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
echo $row['total']; 

$sql4 = "INSERT INTO finaladdition (id, finalAddTotal ) VALUES (NULL,$row['total')"; 

【讨论】:

这个方法是对的,但我想说这肯定不是一个连接查询。它只是添加 2 个值。 @Niels 隐含的连接是 FROM tech a, technew b 构成和 INNER 连接。 啊,确实,我的错 因为$add 是您必须从中获取值的数据库结果。例如:$row = mysqli_fetch_array($add); echo $row['total']; 你做了mysqi_query($connection, $query);吗?你知道如何使用 MySQLi 进行查询吗?

以上是关于添加两个变量,其中包含来自同一数据库的两个不同表的值的主要内容,如果未能解决你的问题,请参考以下文章

将来自两个选择查询的数据添加到一个表中,这些查询针对来自两个不同表的不同列数

SQL:使用来自两个不同表的计数

添加来自不同表的两个字符串列

根据日期检查来自同一表的记录,其中包含多行中的不匹配值

加入表两次 - 在同一个表的两个不同列上

如何避免从两个不同的随机变量中获得相同的值,但值来自同一个列表?