-3

私は2つのテーブルtable topicとtable dosenを持っています

dosen table---->|dosen_id|dosen_nama|     topik---->|dosen_id1|dosen_id2|
                   1         a                           1       2
                   2         b                           2       1
                   3         c                           1       3

このような結果として dosen_id1 と dosen_id2 の行をカウントしたい

|dosen_nama|count|
      a       3
      b       2
      c       1

モデルのどのコードを書く必要がありますか? 私を助けてください...

アップデート

これは私のコントローラーです

$data['jumlah'] = $this->topikdo_model->get_all_topikdo_jumlah();

これが私の見解です

<table class="table table-bordered  table-striped  table-hover ">
        <tbody>
            <tr>

                <th>SANDOS</th>
                <th>Nama</th>
                <th>Jumlah Bimbingan</th>
                <th>Aksi</th>
            </tr>
            <?php
            $no=1;
            foreach($daftardosen as $row)
            {
            ?>
            <tr>

                <td><?php echo $row->dosen_id;?></td>
                <td><?php echo $row->dosen_nama;?></td>
                <td><?php echo $jumlah;?></td>
                <td align='center'>

                    <?php
                    echo anchor('topikdo_controller/rincian_daftardosen/'.$row->dosen_id,'Rincian');
                    ?>
                </td>
            </tr>
            <?php $no++;
            }
            ?>
         </tbody>
    </table>

私はrohini sugestedモデルのようなモデルにクエリを書きました

$sql="SELECT d.dosen_nama, count(t.a) 
  FROM dosen as d, (Select topik_pembimbing1 as a 
                    FROM topik 
                    UNION ALL 
                    SELECT topik_pembimbing2 as a 
                    FROM topik) as t 
  WHERE d.dosen_id = t.a 
  GROUP BY d.dosen_nama"; 
$data=$this->db->query($sql);return $data->result(); 

しかし、「配列から文字列への変換」というメッセージエラーがありました...申し訳ありません、、、私は数日前にインターネットに接続していません...

4

2 に答える 2

0

モデルでこのクエリを使用してみてください.....!

SELECT d.dosen_nama, count(t.a) 
FROM dosen as d, (Select dosen_id1 as a 
                  FROM topik 
                  UNION ALL 
                  SELECT dosen_id2 as a 
                  FROM topik) as t 
WHERE d.dosen_id = t.a 
GROUP BY d.dosen_nama

アップデート:

あなたが書いた、

$sql="SELECT d.dosen_nama, count(t.a) 
      FROM dosen as d, (Select topik_pembimbing1 as a 
                        FROM topik 
                        UNION ALL 
                        SELECT topik_pembimbing2 as a 
                        FROM topik) as t 
      WHERE d.dosen_id = t.a 
      GROUP BY d.dosen_nama"; 

$data=$this->db->query($sql); 
return $data->result(); 

コードの最後の行は、クエリ結果をオブジェクトの配列として返すか、失敗した場合は空の配列を返します。

文字列を使用する必要がある場所でこの配列を使用しようとしていると思われます。配列は文字列として解析されるため、このエラーが発生する可能性があります。

于 2013-03-30T12:44:38.017 に答える
0

クエリを実行するだけで、目的の結果を得ることができます。

SELECT dosen_nama, ((SELECT COUNT(*) FROM topik WHERE dosen_id1=d.dosen_id) +  (SELECT COUNT(*) FROM topik WHERE dosen_id2=d.dosen_id)) AS COUNT
FROM dosen d
于 2013-03-28T10:22:02.030 に答える