【问题标题】:php mysql sum if exists in another tablephp mysql sum 如果存在于另一个表中
【发布时间】:2016-03-09 13:10:28
【问题描述】:

我该怎么做?

我有这张桌子:

表1

|--ID--|--Stars--|--Name--|
|   1  |    3    |  Pe    |
|   2  |    5    |  Me    |
|   3  |    7    |  Fe    |
|------|---------|--------|

表2

|--ID--|--Teams--|--Age---|--Name--|
|   1  |    A    |  20    |  Pe    |
|   2  |    A    |  20    |  Me    |
|   3  |    A    |  20    |  Pe    |
|------|---------|--------|--------|

我想要 Table1 中的星数总和,其中 Name 存在于 Table2 中并且 Teams=A 和 Age=20。 (3+5=8 星)

我用这个,但是如何只计算Table1中的名称与Table2中的名称匹配的星数?

$result = mysql_query("SELECT SUM(Stars) AS starsum FROM Table1 WHERE EXISTS (select * from Table2 WHERE Teams = 'A' AND Age = '20')");
$row = mysql_fetch_assoc($result); 
$antalstjernerhold = $row['starsum'];

【问题讨论】:

  • 你需要了解JOINs

标签: php mysql exists


【解决方案1】:

试试这个查询

   SELECT SUM(t1.Stars) AS starsum 
   FROM Table1 t1 INNER JOIN Table2 t2
   ON t1.Name=t2.Name AND t2.Teams='A' AND t2.Age=20

您必须使用inner join 才能获得所需的结果。

【讨论】:

    【解决方案2】:

    您可以这样编写查询:

    SELECT SUM(Stars) AS starsum
    FROM Table1 t1
    WHERE
      EXISTS (
        SELECT *
        FROM Table2 t2
        WHERE
          T2.Name=T1.Name
          AND T2.Teams='A'
          AND t2.Age=20
      )
    

    【讨论】:

      【解决方案3】:

      您可以使用以下代码

      $result = mysql_query("
      SELECT SUM(Stars) AS starsum
      FROM Table1
      WHERE Name IN (
          SELECT DISTINCT t1.Name 
          FROM Table1 t1, Table2 t2
          WHERE t1.Name = t2.Name
          AND t2.Teams = 'A'
          AND t2.Age = 20
      )
      ");
      $row = mysql_fetch_assoc($result); 
      $antalstjernerhold = $row['starsum'];
      

      查询正在使用下面的子查询,它将获取属于两个表的名称,并将团队作为 A 和年龄 20,然后使用这些名称我们得到星数的总和

      SELECT DISTINCT t1.Name 
      FROM Table1 t1, Table2 t2
      WHERE t1.Name = t2.Name
      AND t2.Teams = 'A'
      AND t2.Age = 20
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-20
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-26
        • 2018-09-25
        • 1970-01-01
        相关资源
        最近更新 更多