麻烦MYSQL加入和计数

时间:2013-06-21 13:45:54

标签: mysql codeigniter

我有两张表, X Y

X

  • X_ID
  • TYPE_ID
  • USER_ID
  • 描述

Y:

  • 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);

这只会让我回复一次。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'];
?>