0

タイトルが少し変な場合は申し訳ありません...しかし、基本的にやりたいことは...最初に例を実行してから、私が持っているコードを投稿します

TableAにはこれらの列があります

  • d-id (INT)
  • コンテンツ (テキスト)

TableBにはこれらの列があります

  • d-id (INT)
  • dif_content (テキスト)

列を持つTableCd-idあります。

に基づいてグループ化しながら、これら2つcontentの列から行数を取得しようとしていdif_contentます。SUMd-id

TableCには、次のようなmain_content数が必要な場所があります。contentdif_content

  • 行(1)
  • 別の行(5)
  • 別の行をもう一度(3)

行内の数字は、その行に対してcontentand dif_contentI が持っている行の数です。

これは私が今持っているコードです

    $query = $this->db->query(
            'SELECT TableA.d-id , TableB.d-id , count(TableA.content) as num_content , count(TableB.dif_content) AS num_dif_content 
             FROM TableA , TableB
             WHERE TableA.d-id = TableB.d-id
             SUM(num_content + num_dif_content) as content_total'

詳細については、私は Codeigniter を使用しているので、Active Record を使用してこれを行う方法があれば、それは素晴らしいことです。

これは、私が今まで行った中で最も複雑なクエリです。(私がプログラミングをしてきた数年間)

私がやろうとしていることを理解できない場合は申し訳ありませんが、もっと知りたい場合はコメントしてください。喜んで投稿を編集します.

4

1 に答える 1

0

うーん、多分私はあなたの質問をはっきりと理解していません。私が正しければ、これが必要なクエリになる可能性があります。

SELECT 
    *, count_t1 + count_t2 as count_all
FROM
    (SELECT d_id, COUNT(content) as count_t1 FROM TableA GROUP BY d_id) t1
    LEFT JOIN
    (SELECT d_id, COUNT(dif_content) as count_t2 FROM TableB GROUP BY d_id) t2
    ON t1.d_id = t2.d_id;

このsqlfiddle リンクを使用してプレビューできます

于 2013-01-19T14:25:23.243 に答える