Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL按多列排序,结果不一_Php_Mysql - Fatal编程技术网

Php MySQL按多列排序,结果不一

Php MySQL按多列排序,结果不一,php,mysql,Php,Mysql,假设我想按3列获取数据和顺序 我目前有: ORDER BY e.HomePage DESC, e.FeaturedProfile DESC, e.DateModified DESC 这将返回首页第一个,然后是FeaturedProfile第二个,这些和其余的结果按DateModified排序。一些配置文件既不是主页也不是FeaturedProfile,因此它们将显示在下面,并仅按DateModified排序 我希望第一个结果是由DateModified排序的HomePage和Featured

假设我想按3列获取数据和顺序

我目前有:

 ORDER BY e.HomePage DESC, e.FeaturedProfile DESC, e.DateModified DESC
这将返回首页第一个,然后是FeaturedProfile第二个,这些和其余的结果按DateModified排序。一些配置文件既不是主页也不是FeaturedProfile,因此它们将显示在下面,并仅按DateModified排序

我希望第一个结果是由DateModified排序的HomePage和FeaturedProfile的组合,然后是下面既不是HomePage也不是FeaturedProfile的任何其他结果

理想情况下,我想在一个查询内完成这一切

编辑:

以下是完整的query inc php代码+为了便于阅读,我已替换了绑定变量: HomePage和FeaturedProfile的字段是布尔值 这是我的主要搜索功能,很抱歉,它太大了 理想情况下,我希望返回所有结果,但如果主页和FeaturedProfile=1,我希望首先返回这些结果,然后返回下面的任何结果。我希望主页和FeaturedProfile可以混合在一起,但仍然高于其他结果。我可以用两个查询来完成这项工作,但我希望用一个查询来实现整洁

$query = "SELECT DISTINCT e.EscortID,
                e.EscortName,
                e.EscortEmail,
                e.EscortTelephone,
                e.EscortWebsite,
                e.InCallLocation,
                e.HairColour,
                g.GenderDescription,
                n.NationalityName,
                et.EthnicityName,
                ((date_format(now(),'%Y') - date_format(e.DateOfBirth,'%Y')) - (date_format(now(),'00-%m-%d') < date_format(e.DateOfBirth,'00-%m-%d'))) AS Age,
                SUBSTRING_INDEX(e.EscortProfile,' ', 24) AS Description,
                p.PhotoAlt,
                p.PhotoURL,
                e.ShowReviews
                FROM tEscort e
                INNER JOIN tEscortArea ea ON e.EscortID = ea.tEscort_EscortID
                INNER JOIN tEthnicity et ON e.tEthnicity_EthnicityID = et.EthnicityID
                INNER JOIN tNationality n ON  e.tNationality_NationalityID = n.NationalityID
                INNER JOIN tGender g ON e.tGender_GenderID = g.GenderID AND g.Enabled=1
                LEFT JOIN tEscortAgency eag ON e.EscortID = eag.tEscort_EscortID
                LEFT JOIN tAgency a ON a.AgencyID = eag.tAgency_AgencyID 
                LEFT JOIN (tEscortPhoto ep INNER JOIN tPhoto p ON (ep.tPhoto_PhotoID = p.PhotoID AND p.Enabled=1)) 
                    ON e.EscortID = ep.tEscort_EscortID AND ep.ProfilePhoto = 1
                LEFT JOIN (tEscortEnjoyments ee INNER JOIN tEnjoyment en ON (ee.tEnjoyment_EnjoymentID = en.EnjoymentID AND en.Enabled=1))
                    ON e.EscortID = ee.tEscort_EscortID
                LEFT JOIN (tEscortServices es INNER JOIN tService s ON (s.ServiceID = es.tService_ServiceID AND s.Enabled=1)) 
                    ON e.EscortID = es.tEscort_EscortID
                WHERE e.Enabled=1
                AND e.Active=1
                AND e.AvctivePayments=1";

            if(!empty($areas)){$query .= " AND ea.tArea_AreaID IN($areas)";}
            if(!empty($enjoyments)){$query .= " AND ee.tEnjoyment_EnjoymentID IN($enjoyments)";}
            if(!empty($ethnicities)){$query .= " AND e.tEthnicity_EthnicityID IN($ethnicities)";}
            if(!empty($genders)){$query .= " AND e.tGender_GenderID IN($genders)";}
            if(!empty($nationalities)){$query .= " AND e.tNationality_NationalityID IN($nationalities)";}
            if(!empty($services)){$query .= " AND es.tService_ServiceID IN($services)";}
            if(!empty($hair)){$query .= " AND e.HairColour LIKE '%$hair%'";}
            if(!empty($braSize)){$query .= " AND e.tGender_GenderID != 1 AND e.BraSize IS NOT NULL AND e.BraSize REGEXP '$braSize'";}
            if(!empty($dressSize)){$query .= " AND e.tGender_GenderID != 1 AND e.DressSize IS NOT NULL AND e.DressSize >= $dressSize";}
            if(!empty($escortType))
            {
                switch ($escortType)
                {
                    case 'Agency' :
                        $query .= " AND eag.tAgency_AgencyID IS NOT NULL ";
                        break;
                    case 'Independent' :
                        $query .= " AND eag.tAgency_AgencyID IS NULL";
                        break;
                }
            }

            if(!empty($ageFrom) && !empty($ageTo)){
                $i = 0;             
                $query .= " AND (";     
                foreach($ageFrom  as $from)  {  
                    if($i > 0 ){
                        $query .= " OR ";   
                    }                   
                    $query .= " e.DateOfBirth BETWEEN '$ageTo[$i]' AND '$from' ";               
                    $i++;                   
                }
                $query .= " ) ";                
            }

            if(!empty($breasts)){
                $i = 0;             
                $query .= " AND (";     
                foreach($breasts  as $cupSize)   {  
                    if($i > 0 ){
                        $query .= " OR ";   
                    }                   
                    $query .= " e.BraSize IS NOT NULL AND e.BraSize REGEXP '$cupSize' ";                
                    $i++;                   
                }
                $query .= " ) ";                
            }

            if(!empty($incallAreas)){
                $i = 0;             
                $query .= " AND (";     
                foreach($incallAreas  as $incallArea)    {  
                    if($i > 0 ){
                        $query .= " OR ";   
                    }
                    $incallAreaSub = substr($incallArea, 0, 5);             
                    $query .= " e.InCallLocation IS NOT NULL AND (e.InCallLocation LIKE '%$incallArea%' OR e.InCallLocation LIKE '%$incallAreaSub%') ";             
                    $i++;                   
                }
                $query .= " ) ";                
            }

            if(!empty($freeText)){ $query .= " AND (e.EscortName LIKE '%$freeText%' OR a.AgencyName LIKE '%$freeText%')"; }

            switch ($orderBy)
            {
                case 'created' :
                    $query .= " ORDER BY e.DateCreated DESC";
                    break;
                case 'age' :
                    $query .= " ORDER BY e.DateOfBirth DESC";
                    break;
                case 'popularity' :
                    $query .= " ORDER BY e.ViewCount DESC";
                    break;
                default :
                    $query .= " ORDER BY e.DateModified DESC";
                    break;
            }

            $query .= " LIMIT $start, $pageSize";

我不明白。主页和功能配置文件是布尔字段吗?@NielsKeurentjes是的,我也不明白:-。我想主要的订单是按日期修改的,但为了让主页和功能配置文件位于顶部,我将它们添加到订单中,但我希望它们混合在一起。对不起,如果我没有很好地解释我自己。嗯,不,我仍然不明白这个问题。如果您提供一些示例输入和输出,并了解数据库表的外观,可能会有所帮助。谢谢,我会重新思考我是如何做到这一点的。我可以用两个查询来完成它,但我试图用一个查询来完成它。当我了解更多信息时,我会发回:-+我会将完整查询添加到OP