Mysql 如何选择与其他列匹配的列的更多结果?
我想知道是否可以从一个列中选择比其他列更多的结果:Mysql 如何选择与其他列匹配的列的更多结果?,mysql,sql,Mysql,Sql,我想知道是否可以从一个列中选择比其他列更多的结果: 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 = $res
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>';
}
}
}
公共函数SameCars(){
$q=“从carads中选择*,其中STATUS='1'和DEL='0'以及ADID=”.$\请求['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=日期('Y');
$yearlow=$myyear-5;
如果($yearhigh QueryResult(“从carads中选择*,其中BODY类似“$BODY”且STATUS='1',YEAR介于$yearlow和$yearhigh之间,DEL='0',TITLE!=''和TITLE!='-1',IMAGE1!='-1',PRICE介于$pricelow和$pricehigh限制0,3之间”);
$i=0;
如果(计数($samecar)){
foreach($samecar作为$samecar){$i++;
如果($i==3)$cls=“新闻行最后一条”;否则$cls=“新闻行”;
回声'
“'.$this->FckContentView($this->closetags(substr($samecar->DESCRIPT,0,50))。”
';
}
}
}
我希望$make
比其他标准具有60%的重要性
例如,在这个查询中,它将从数据库中匹配这些条件的MAKE
“BMW”中回显前3辆车的3个拇指列表。我想输出3个拇指;2个拇指来自BMW,1个拇指来自另一辆接近标准但不同MAKE
的车
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
从克拉中选择*
其中BODY类似于“$BODY”
然后做“$MAKE”
和STATUS='1'
年份介于$yearlow和$yearhigh之间
和DEL='0'
和标题!=''
和标题!='-1'
和图像1!=''
和图像1!='-1'
价格介于$pricelow和$pricelhigh之间,限制为0,1
尝试用一个查询执行此操作是可能的,但是非常混乱,我建议使用两个查询-这些限制将确保不会对数据库施加过多的负载始终样式(缩进)你的代码放在这里之前…你的意思是你希望你的
WHERE
子句是还是而不是和?请提供一些示例数据和期望的结果。这是一个PHP问题还是一个SQL问题?请将其限制在一个域内。我会去掉你的edit@user3140607,只包含SQL-就是这样你感兴趣的是什么?是的,类似这样。但是我需要像添加新变量一样更改我的php代码吗?两个单独的数据库调用,而不是使用联合返回一个结果集?同一字段上的这两个和条件应该转换为而不是()
。是的,但是你有60:40分割的问题-如果你能写一个有效的mysql查询,那么就按照我希望看到的那样去做,但是当我在结果上摆弄60:40分割时,意味着我的查询太长而且无法管理,所以2次调用似乎更好。