У меня есть 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.
Результаты верны, я получаю все найденные мной колоды. Но у меня также есть какой-то декартовой продукт, я получаю две или более строк с почти одинаковыми результатами.
Как я могу избежать этого? Я хочу, чтобы каждая строка была только одна, так как результаты должны отображаться в веб-поиске.
UPDATE
Я первый попытался выяснить, если SELECT DISTINCT
вещь будет работать, используя это заявление: pastie.org/970959 Но она по-прежнему дает мне декартово произведение. Что случилось с этим?
Укажите, пожалуйста, какой db вы используете. – hgulyan