0

特に、結合に複雑な条件を埋め込む必要があるため、CI でコードを動作させるのに問題があります A のすべてのフィールドから情報を抽出してカウントしたい

カウントに最適な最初のケース

$this->db->distinct();
$this->db->select('A.id, count(B.id) AS C');
$this->db->from('A');
$this->db->join('B','B.id=A.id','left outer');
$this->db->group_by('A.id');

ここで、日時である A からの行に条件を追加して、指定された日付の後に A からすべての情報を抽出する場合、条件が満たされない場合は 0 を返します。

$this->db->distinct();
$this->db->select('A.id, count(B.id) AS C');
$this->db->from('A');
$this->db->join('B','B.id=A.id','left outer');
$this->db->where('B.date >',$date);
$this->db->group_by('A.id');

このコードは機能していますが、条件を満たす行のみを返し、カウントが 0 の他のすべての行ではありません。

where句の何が問題なのか誰か教えてもらえますか?

ありがとう

4

1 に答える 1

1

whereを元に戻していleft outer joinます。あなたはこれができますか?

$this->db->join('B','B.id=A.id and 'B.date >', $date, 'left outer');

onSQL では、ステートメントに両方の条件を入れることでこれを処理します。

from A left outer join
     B
     on B.id = A.id and B.date > $date;
于 2013-08-30T02:37:42.223 に答える