2014-01-24 54 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个电话看起来好多了,而且很难处理。 –

相关问题