2014-05-23 21 views
0

我有bookscategories工作斯芬克斯指數(多對多連接)Sphinx sql_attr_multi - 如何找到確切的值組合?

source books : base 
{ 
    sql_attr_multi =uint categories from query; \ 
     select book_id, category_id\ 
     from books\ 
     join book_categories on book_categories.book_id = books.id 
} 

所以,如果我使用MySQL連接檢索記錄,它應該是這樣的:

-- get all books that are in categories 2 and 3 at the same time 
SELECT id FROM books WHERE categories = 2 AND categories = 3; 

這會給我一份2類和3類書籍的清單,但也可以在任何其他類別中。

enter image description here

我想要做的是搜索結果限制爲那些書籍,只在類別2和3,而不是在任何其他類別

enter image description here

這是可能的,因爲所有類別的清單是大的NOT IN()指定呢?

+0

心不是你的第二個維恩圖,顯示出2 XOR 3?即,或者,但不是兩者。但在描述中,是在說和。所以維恩圖應該是藍色的2和3之間的**重疊**。 – barryhunter

回答

1

獅身人面像V2.1.2中,有length()函數,返回MVA的長度:)

SELECT id FROM books WHERE categories = 2 AND categories = 3 AND LENGTH(categories) = 2; 

功能不中WHERE總是工作,因此,如果上面的失敗可以嘗試

SELECT id, LENGTH(categories) as len FROM books 
    WHERE categories = 2 AND categories = 3 AND len = 2; 

(假設你真的均值和查詢。OR查詢會更棘手,但XOR會很容易)