0

我有两张桌子,XY

X:

  • x_id
  • type_id
  • 用户身份
  • 描述

是的:

  • x_id(不是唯一的)
  • 日期

我提供了一个 user_id 和一个 type_id,每个用户在 X 中可以有多个具有相同 type_id 的条目。

我需要计算 Y 中符合上述条件的所有条目。(希望我说清楚了;))

所以基本上:从 X 上匹配 user_id 和 type_id 的条目中,获取 Y 上具有相同 x_id 的所有条目。

这是我在 CodeIgniter 中尝试的一个查询(但任何类型的 MYSQL 都可以):

  $this->db->select("X.description, COUNT(Y.x_id) AS count ");
    $this->db->from("X");
    $this->db->join("Y", "Y.x_id=X.x_id");
    $this->db->where("X.type_id", 1);
    $this->db->where("X.user_id", 2);

不过,这仅返回我 1 个条目。

4

2 回答 2

1

你可以试试这段代码:

select count(x_id) as total from y where x_id in ( select x_id from x where type_id = 'type_id_here' AND user_id = 'user_id_here'  )

在 Codeigniter 中:

<?php
 $sql = "select count(x_id) as total from y where x_id in ( select x_id from x where type_id = 'type_id_here' AND user_id = 'user_id_here'  )";
 $rs = $this->db->query($sql);
 $data = $rs->row_array();
 $total = $data['total'];
?>
于 2013-06-21T13:55:19.437 回答
1

基于此“我需要计算 Y 中符合上述条件的所有条目”,您可以尝试以下操作:

SELECT 
    COUNT(*) 
FROM 
    x 
INNER JOIN y
    ON x.x_id = y.x_id
WHERE 
    x.type_id = 1
    AND x.user_id = 2

更新:如果您想按描述进行计数,则需要按照 Ed Gibbs所述进行分组:

SELECT 
    x.description,
    COUNT(*) 
FROM 
    x 
INNER JOIN y
    ON x.x_id = y.x_id
WHERE 
    x.type_id = 1
    AND x.user_id = 2
GROUP BY
    x.description
于 2013-06-21T13:49:55.167 回答