2016-03-17 40 views
1

properties_tbl笨活动记录从两个不同的列值获得行

id property_type usd_price euro_price published 
---------------------------------------------------- 
1 private   1000.00 0   yes 
2 landed   1200.00 0   yes 
3 private    0 1200.00 yes 
4 land    2000.00 0   yes 
5 land    0   3000.00 yes 
6 private   0   1200.00 yes 

此表样表,我的网站

如果usd_price存在欧元将0,然后,如果欧元存在的美元价格会0,

我在我的系统中做出了相同的交换价值usd和欧元价格。

我的问题是在搜索,当我搜索这样的查询显示它的所有行

SELECT * 
FROM (`properties_tbl`) 
WHERE (euro >= 100 OR usd >= 110) 
    AND (euro <= 5000 OR usd <= 4500) 
    AND `published` = 'yes' 
+0

你想达到什么目的?据我看到您的查询将返回您的示例表中的所有行。 –

+3

尝试此查询:'SELECT * FROM ('properties_tbl') WHERE(BETWEEN 100和5000 EURO) AND(110与4500美元) 和'published' =“yes'' – devpro

+0

没有u检验呢? 。 – devpro

回答

0

感谢大家,所有给我非常有用的建议。 我在@devpro和@cfnerd上创建了新的查询库。

$this->db->where("(property_price BETWEEN $minprice AND $maxprice OR usd BETWEEN $usd_minprice AND $usd_maxprice)"); 

现在工作! 感谢所有

0

我相信这个问题是由于你的SELECT查询,而不是CodeIgniter的活动记录。根据样本表中的数据,WHERE子句中的第一个条件始终为真。关于如何构建基本查询,devpro的意见是正确的。

要做到这一点在CodeIgniter的Active Record的结构,你可以做很可能是一些不同,但这个工程:

$this->db->select('*'); 
$this->db->from('properties_tbl'); 
$this->db->where('euro BETWEEN 100 AND 5000'); 
$this->db->where('usd BETWEEN 110 AND 4500'); 

希望这有助于。