2011-06-30 61 views
0
$results2=mysql_query(" 
SELECT * FROM searchengine 
WHERE 
    id IN (" . implode(',', $ids) . ") 
    OR id IN (" . implode(',', $ids2) . ") 
INNER JOIN keywords ON searchengine.id=keywords.id 
ORDER BY 
    (relevant-irrelevant) DESC, 
    (rating/votes) DESC, 
    report ASC, 
    LENGTH(description) DESC, 
    title ASC 
LIMIT $page, $limit 
"); 

上面的東西不起作用喜歡我認爲這會,雖然循環返回布爾錯誤。INNER JOIN MySQL的布爾錯誤代碼

implode函數的代碼工作正常。

我的數據庫是的搜索引擎關鍵字

的搜索引擎:ID,標題,說明...

關鍵字:NUM,ID,A,B

的A和B id應該被添加到searchengine(基於相同的id)來做類似(id,title,desc,a,b ...)。問我你需要更多的細節。

注意:searchengine id是唯一編號,但關鍵字可以多次具有相同的id(其中一個id由A和B值選取並插入爲$ ids1)。

+0

你是什麼意思,「while循環返回布爾錯誤」。雖然($ data2 = mysql_fetch_array($ results2))沒有在你的SQL語句或PHP(?)代碼 –

+0

中的while循環沒有認爲它是重要的,但它在這裏,錯誤是這個警告:mysql_fetch_array()預計參數1是資源,在 – Arremer

+0

給出的布爾值似乎是一個比SQL問題更多的PHP然後(或兩者的交互) –

回答

3
  • 移動連接下的where子句。
  • 使用表名限定id。 searchengine.id

SELECT * 
FROM searchengine 
INNER JOIN keywords ON searchengine.id=keywords.id 
WHERE 
    searchengine.id IN (" . implode(',', $ids) . ") 
    OR searchengine.id IN (" . implode(',', $ids2) . ") 
ORDER BY 
    (relevant-irrelevant) DESC, 
    (rating/votes) DESC, 
    report ASC, 
    LENGTH(description) DESC, 
    title ASC 
LIMIT $page, $limit 
+0

我在我的問題中添加註意,如果我移動到最後,我相信混亂髮生在多個id-s的JOIN函數原因 – Arremer

+0

這就是爲什麼你需要使用表'searchengine.id' –

+0

hm在第二次查看時使用id來限定id它會使一些更加不合理的布爾錯誤仍然存​​在,il嘗試添加更多細節。 – Arremer

0

你的WHERE子句應該是來的JOIN之後。

SELECT * 
    FROM searchengine 
     INNER JOIN keywords 
      ON searchengine.id=keywords.id 
    WHERE id IN (" . implode(',', $ids) . ") 
     OR id IN (" . implode(',', $ids2) . ") 
    ORDER BY (relevant-irrelevant) DESC, (rating/votes) DESC, report ASC, LENGTH(description) DESC, title ASC 
    LIMIT $page, $limit