我有两张表, X 和 Y
X
Y:
我提供了一个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);
这只会让我回复一次。
答案 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'];
?>