2016-09-02 8 views
-1

codeigniterでこのクエリを作成するには?codeigniterフレームワークでSQLクエリを作成する方法

SELECT `nome_paciente` 
FROM `cronograma_preventivo` 
JOIN `paciente` 
ON `cronograma_preventivo`.`id_paciente` = `paciente`.`id_paciente` 
WHERE `mes` = '2016-09-01' 
AND `kit_higiene` + `raspagem` + `atendimento` + "aplicacao_fluor" + "evidenciacao_placa" + "polimento_protese" != 0 
GROUP BY `nome_paciente` 

私はこの試みた:

$this->db->join('paciente', 'cronograma_preventivo.id_paciente = paciente.id_paciente'); 
    $this->db->select('nome_paciente'); 
    $this->db->where('mes', date('Y-m-01',strtotime("NOW"))); 
    $this->db->where("(kit_higiene+raspagem+atendimento+aplicacao_fluor+evidenciacao_placa+polimento_protese)>=0"); 
    $this->db->group_by('nome_paciente'); 

をしかし、これは動作しません:(このような行がクエリビルダコードから欠落しているよう

+2

「動作しません」は、あなたが観察している動作に関する実際の情報を伝えません。エラーメッセージが返されますか?予期しない結果セットを返すか?表示されるSQLクエリには、二重引用符が含まれています...列参照を囲むはずの文字列か、文字列リテラルであると思われる文字列ですか?また、列参照は修飾されていないので、どの表にどの列が含まれているか、つまり '\' mes \ ''が含まれているかどうかはわかりません。 – spencer7593

+0

"+" aplicacao_fluor "+" evimentenciacao_placa "+" polimento_protese "'は何をするべきなのか分かりません – Strawberry

+0

さらにGROUP BY句がありますが、集計関数はありません - ほとんど意味がありません – Strawberry

答えて

0

は私には思える:

$this->db->from('cronograma_preventivo') 

それは私のように思えます。

$this->db->select() 

は、db->joinの前にあるdb->fromの前に、の最初のになるはずです。

私はちょうど推測しています。私はcodeigniterクエリービルダーをしません。私はメソッドを注文するための要件に精通していない。私はデータベースに提出する必要があるSQLを作成する方がずっと快適です。そして私は多くを好むすべての列の参照は、データベーススキーマに慣れていないかもしれない将来の読者、どの列がどのテーブルから来るか、そして2つは、SQLが "同じ名前の列が別の表に追加されたときの「あいまいな列」の参照です。

SELECT p.nome_paciente 
    FROM cronograma_preventivo r 
    JOIN paciente p 
     ON p.id_paciente = r.id_paciente 
    WHERE r.mes = '2016-09-01' 
    AND (r.kit_higiene 
     + r.raspagem 
     + r.atendimento 
     + r.aplicacao_fluor 
     + r.evidenciacao_placa 
     + r.polimento_protese 
     ) != 0 
    GROUP BY p.nome_paciente 

そして、私はCodeIgniterのQueryBuilderにそれを変換しなければならない場合、私はこのような何かしようとするだろう:

$this->db->select('p.nome_paciente'); 
    $this->db->from('cronograma_preventivo r'); 
    $this->db->join('paciente p','p.id_paciente = r.id_paciente'); 
    $this->db->where('r.mes','2016-09-01'); 
    $this->db->where('(r.kit_higiene 
     + r.raspagem 
     + r.atendimento 
     + r.aplicacao_fluor 
     + r.evidenciacao_placa 
     + r.polimento_protese 
     ) != 0'); 
    $this->db->group_by('p.nome_paciente'); 

をそして、私はこれが「機能しない」ということが観察され、私が質問を投稿場合StackOverflowでは、私が実際に察していた動作、特にのエラーメッセージが返されます。

予期しない結果セットが得られた場合は、CodeIgniterが生成していたSQL文を見て、それを構築したいクエリと比較してそこから移動します。

関連する問題