2016-04-13 11 views
0

Bir DB çizelgesi işim var. Tabloda bir sütun var 'özellikli' = NULL veya 1.boost özellik sıralamasında alaka düzeyi olarak sıralanmış sql

Bir kullanıcı anahtar kelimeleri kullanarak tabloyu arayabilir. Ve aşağıda gibi (alaka), alaka, tarih veya maaş göre sıralamak:

SELECT SQL_CALC_FOUND_ROWS *, MATCH(`title`) 
      AGAINST ("*'.$keywords.'*") 
      AS Relevance 
      FROM jobs2 
      WHERE MATCH(`title`) 
      AGAINST ("*'.$keywords.'*") 
      ORDER BY Relevance 
      LIMIT 0,50 

Ben her sayfada ilk olmak 'özellikli' tüm işleri istiyorum (ama sırayla hala her özellikli iş kendilerini) .

örneğin bir doğal arama (sırayla) Geri dönmek için ise:

Job1 not featured 
Job2 not featured 
Job3 featured 
Job4 not featured 
Job5 featured 

Ben üstündeki özellikli işler istedikleri gibi sırayla:

Job3 featured 
Job5 featured 
Job1 not featured 
Job2 not featured 
Job4 not featured 

Bunu nasıl başarabiliriz? İdeal SQL sorgusunun kendisi mümkünse de

+0

'SİPARİŞ , Alaka düzeyi DESC' veya benzeri. – AbraCadaver

cevap

0

Eh, sadece her şeyden önce liste özellikli olanların hepsi istiyorsanız, yapabilirsiniz sadece sıralama iki sütunla:

SELECT SQL_CALC_FOUND_ROWS *, MATCH(`title`) 
    AGAINST ("*'.$keywords.'*") 
    AS Relevance 
    FROM jobs2 
    WHERE MATCH(`title`) 
    AGAINST ("*'.$keywords.'*") 
    ORDER BY featured desc, Relevance desc -- <-- This here 
    LIMIT 0,50 

almanı istediğim yerine ise ilk her sayfada ancak özellikli listeleri Eğer uygulama mantığında ya yapabilir, aksi genel sıralamayı etkileyebilecek veya bir alt sorgu ile aynı sorguyu kullanmak ve sonuçlarını sıralamak için: özellikli DESC

SELECT * from 
    (SELECT SQL_CALC_FOUND_ROWS *, MATCH(`title`) 
    AGAINST ("*'.$keywords.'*") 
    AS Relevance 
    FROM jobs2 
    WHERE MATCH(`title`) 
    AGAINST ("*'.$keywords.'*") 
    ORDER BY Relevance desc 
    LIMIT 0,50) AS X 
ORDER BY X.featured desc, X.Relevance desc; 
+0

Teşekkür ederim - aradığım ikinci örnek buydu – rpsep2

İlgili konular