2016-03-17 65 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'); 

希望這有助於。