好的只是为了保持这个简单,我需要遍历这个名为DISTINCT
的表中每列的PRINTS
结果现在这里是奇怪的部分......
$this->db->distinct();
$this->db->select('PRINTS.COLOR');
$q = $this->db->get('PRINTS');
return $q->result();
确定COLOR
是表格中的COL {是SIZE
和PAPER
---好了准备,因为这是奇怪的地方......
如果我$this->db->select('PRINTS.SIZE');
,我可以遍历表格中DISTINCT
的{{1}}值。
无论其
如果我SIZE
我收到错误:发生数据库错误/错误号码:1054 /
未知列$this->db->select('COLOR');
同样的事情也发生在'COLOR' in 'field list'
上 - 似乎只有PAPER
才能正常工作。根据CODEIGNITER DOCS,我需要做的是:SIZE
但是我收到了一个未知的$this->db->select('COLOR, PAPER, SIZE');
错误。拼写是正确的。任何人都可以阐明这一点吗?到底是怎么回事? TY
答案 0 :(得分: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表中。
最后,我认为最好的方法是在获取数据后进行一些simple normalization以便更好地查询数据,并提高应用的效果。