我有6個表,我們稱它們爲a,b,c,d,e,f。現在,我想搜索某個單詞的所有表的列(除了ID列),讓我們說'喬'。我所做的是,我在所有表格上做了INNER JOINS,然後使用LIKE來搜索列。如何在INNER JOIN查詢中避免笛卡爾積?
INNER JOIN
...
ON
INNER JOIN
...
ON.......etc.
WHERE a.firstname
~* 'Joe'
OR a.lastname
~* 'Joe'
OR b.favorite_food
~* 'Joe'
OR c.job
~* 'Joe'.......etc.
結果是正確的,我得到所有我想找的colums。但我也得到了一些笛卡爾產品,我得到了兩條或更多條線,結果幾乎相同。
我該如何避免這種情況?我希望每行只有一行,因爲結果應該顯示在網頁搜索上。
UPDATE
我第一次嘗試弄清楚如果SELECT DISTINCT
事情會使用下面的語句工作:pastie.org/970959但它仍然給了我一個笛卡爾乘積。這有什麼問題?
請指定你使用的數據庫。 – hgulyan 2010-05-20 09:08:15