2014-01-24 58 views
0

我想知道是否有可能從一列中選擇多個結果,其他列:如何選擇更多匹配其他列的列的結果?

public function SameCars() { 
    $q = "select * from carads where STATUS='1' and DEL='0' and ADID=".$_REQUEST['carID']; 
    $result = $this->QueryResult($q); 
    $myprice = intval($result[0]->PRICE); 
    $body = $result[0]->BODY; 
    $pricelow = $myprice - (30/100 * $myprice); 
    $pricehigh = $myprice + (30/100 * $myprice); 
    $myyear= $result[0]->YEAR; 
    $currentyear = date('Y'); 
    $yearlow = $myyear - 5; 
    if ($yearhigh <= $currentyear-3) { 
    $yearhigh = $myyear + 5; 
    } else { $yearhigh = $myyear; } 
    $samecars = $this->QueryResult("SELECT * FROM carads where BODY LIKE '$body' AND STATUS='1' AND YEAR BETWEEN $yearlow and $yearhigh and DEL='0' and TITLE !='' and TITLE !='-1' and IMAGE1 != '' and IMAGE1 != '-1' and PRICE BETWEEN $pricelow and $pricehigh LIMIT 0,3"); 
    $i=0; 
    if (count($samecars)) { 
     foreach ($samecars as $samecar) {$i++; 
     if($i==3) $cls="news-row last"; else $cls="news-row"; 
     echo '<div class="'.$cls.'"> 
        <div class="img"><a href="'.$base_path.'detail-page_'.$samecar->ADID.'.html">'; 

        if($samecar->IMAGE1!='' && !empty($samecar)) 
        echo '<img src="'.$samecar->IMAGE1.'" alt="" height="79" width="89" />'; 
        else echo '<img src="'.$base_path.'uploads/no-img.jpg" height="79" width="89"/>'; 
        echo '</a></div> 
        <div class="details"> 
        <h5><a href="'.$base_path.'detail-page_'.$samecar->ADID.'.html">'.$samecar->TITLE.'</a></h5> 
        <div class="descn">"'.$this->FckContentView($this->closetags(substr($samecar->DESCRIPT, 0,50))).'</div> 
        </div> 
       </div>'; 
     } 
    } 
} 

我想$make有比其他標準60%的重要性。

就像這個查詢中的例子,它會迴應一個3匹大拇指的列表,其中前三名來自MAKE「BMW」,符合這些標準的數據庫。我想輸出3個大拇指;從BMW和1 2個大拇指從另一輛車是標準但不同MAKE內接近。

+0

總是樣式(縮進)將在這裏之前,你的代碼過載... –

+0

你的意思是你想你'WHERE'子句是'或',而不是'和'? – RedFilter

+0

我試過適合它。像在PHP中縮進? – user3140607

回答

1
SELECT * FROM carads 
WHERE BODY LIKE '$body' 
AND MAKE = '$make' 
AND STATUS='1' 
AND YEAR BETWEEN $yearlow and $yearhigh 
AND DEL='0' 
AND TITLE !='' 
AND TITLE !='-1' 
AND IMAGE1 != '' 
AND IMAGE1 != '-1' 
AND PRICE BETWEEN $pricelow and $pricehigh LIMIT 0,2 

然後運行與

SELECT * FROM carads 
WHERE BODY LIKE '$body' 
AND MAKE <> '$make' 
AND STATUS='1' 
AND YEAR BETWEEN $yearlow and $yearhigh 
AND DEL='0' 
AND TITLE !='' 
AND TITLE !='-1' 
AND IMAGE1 != '' 
AND IMAGE1 != '-1' 
AND PRICE BETWEEN $pricelow and $pricehigh LIMIT 0,1 

第二查詢試着和一個單一的查詢是可能的,但這麼亂,我會推薦2個查詢做到這一點 - 的限制將確保你不把在你的數據庫

+0

是的,就像這樣。但是,我需要改變我的PHP代碼像添加一個新的變量? – user3140607

+0

2個獨立的數據庫調用,而不是使用聯合返回一個結果集?在同一個字段中的這兩個'和'條件應該轉換爲'not in()'。 – Dan

+0

是的,但你擁有60:40的問題,那麼 - 如果你可以寫一個有效的MySQL查詢工作做它,因爲我希望能看到它,但是當我擺弄了60:40的結果意味着我的查詢語句那2個電話看起來好多了,而且很難處理。 –

相關問題