1

これを単純にするためDISTINCTに、このテーブルの各列の結果をループする必要があります。これPRINTSが奇妙な部分です...

$this->db->distinct();
$this->db->select('PRINTS.COLOR');
$q = $this->db->get('PRINTS');
return $q->result();

OkCOLORは現状のままのテーブルのCOLでありSIZEPAPER ---これは奇妙になる場所なので、準備をしてください...

そうすれば、表のの値$this->db->select('PRINTS.SIZE');をループすることができます。DISTINCTSIZE

でも

エラーが発生した場合$this->db->select('COLOR');:データベースエラーが発生しました/エラー番号:1054/不明な列'COLOR' in 'field list'

同じことが起こりPAPERます-正常にSIZE機能するだけのようです。CODEIGNITER DOCSによると、私はする必要があります:$this->db->select('COLOR, PAPER, SIZE');しかし、私は未知のCOLエラーを受け取っています。スペルは正しいです。誰かがこれに光を当てることができますか?何が起こっている?TY

4

1 に答える 1

1

各タイプのみの個別の行が必要な場合は、それらの特定の列のみを個別に使用する必要があります。

$this->db->distinct();
$this->db->select('COLOR');
$q = $this->db->get('PRINTS');
$q_color = $q->result();

$this->db->distinct();
$this->db->select('SIZE');
$q = $this->db->get('PRINTS');
$q_size = $q->result();

$this->db->distinct();
$this->db->select('PAPER');
$q = $this->db->get('PRINTS');
$q_paper = $q->result();

@Rocket Hazmat が指摘したように、結果が混在している場合、それらは別個の行として扱われます。私の提案は、a) これらの値を保持する追加のテーブルを作成する (推奨)、または b) 使用可能な個別の値でテーブルの列を変更することです。

サンプルの COLORS テーブルは次のようになります。

Colors
id    | name
----------------------
1     | red
2     | blue
3     | green

次に、これに対するクエリは、使用可能なすべての色を取得するための単純なものです。

$q = $this->db->get('COLORS');

これはCSVファイルからインポートされていると述べたので、CSVをインポートした後に必要な処理を実行して、上記のように個別の値を取得し、それらをCOLORSテーブルに入れることができると思います.

最後に、データを取得したら、簡単な正規化を行ってクエリを改善し、アプリのパフォーマンスを向上させるのが最善の方法だと思います。

于 2012-10-25T20:38:54.800 に答える