2012-12-14 32 views
0

我在網站上搜索,我總共有10個表應該被搜索。php mysql多表與不同列搜索方法

我不希望使用多個查詢這樣的:

SELECT `manufacturer` FROM `auto` WHERE .... 
SELECT `city`,`address` FROM `estate` WHERE .... 
SELECT `title`,`content` FROM `news` WHERE .... 
... and 6 more queries 

相反,我想用一個查詢來獲取所有所需的數據和分配結果網站網址去。

我該如何表現?

+0

請問您可以告訴我們您要搜索哪一列?向我們提供更詳細的查詢示例 –

回答

0

的常用方法是UNION您查詢

SELECT * FROM (
    (
     SELECT `manufacturer` AS sval FROM `auto` WHERE .... 
    ) 
    UNION 
    (
     SELECT CONCAT(`city`,`address`) AS sval FROM `estate` WHERE .... 
    ) 
    UNION 
    (
     SELECT CONCAT(`title`,`content`) AS sval FROM `news` WHERE .... 
    ) 
) 
+0

在聯合中,您必須選擇相等數量的列。 –

+0

這只是一個例子,如果有多個列需要搜索,更新,甚至可以連接列值。 –

0

用途分開查詢是很好的解決方案。如果您將在一個查詢中使用所有表格,則所有表格都將在查詢時間內鎖定。如果你會使用LIKE或全文搜索,那麼你生病了鎖定您的網站。

您可以對每個表使用分隔查詢。或者你可以在外部索引進行搜索。例如,您可以使用sphinx - 構建索引並按索引搜索。

+0

我不打算使用獅身人面像,服務器將不支持這樣的庫。但我還有一點。使用單獨的查詢不是一個壞主意嗎?我應該先查詢哪個表格?我的意思是順序,爲什麼搜索新聞表,如果有更好的文章比賽。 – Davit