2011-12-20 14 views
1

Я работаю над сайтом знакомств и благодаря отличным ответам мне удалось сделать этот запрос. Я полностью новичок :)Mysql union query duplicate rows

Проблема с этим запросом объединения заключается в том, что он, похоже, не удаляет повторяющиеся записи, и я понятия не имею, почему.

имя пользователя - это имя людей, которые присоединяются к сайту;

готовность - это то, что они желают сделать, часть их страницы профиля.

Например, если при поиске слова «обед» (например, в сильфоне запроса), то запрос находит человек, у которых есть символы «Ланч» в их пользователе или в их готовности профиль.

Но иногда, кто-то и слово «обед» в его пользователя и в его профиль готовности.

Как удалить эти повторяющиеся строки?

Я использую этот запрос для кода навигации php.

Не могли бы вы помочь?

result = mysql_query(" 

(SELECT 1 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND username LIKE '%lunch%') 

UNION 

(SELECT 2 as sort_col,username,pic0 FROM ".$table." WHERE username IS NOT NULL AND age BETWEEN '28' AND '45' AND willingness LIKE '%lunch%') 

ORDER BY sort_col 

LIMIT ".$offset.", ".$rowsperpage.""); 

Любые идеи?

Спасибо!

ответ

1

Обходным решением. Вы можете использовать:

SELECT username, pic0 
FROM ".$table." 
WHERE (username LIKE '%lunch%') 
    OR (username IS NOT NULL 
     AND age BETWEEN 28 AND 45 
     AND willingness LIKE '%lunch%' 
    ) 
ORDER BY (username LIKE '%lunch%') DESC 
1

Ваш sort_col гарантирует, что строки между двумя запросами всегда будут отличаться (1 против 2), поэтому дубликатов не будет.

+0

Это страх, я вижу их, когда я действительно использую код, любую идею почему? имейте в виду, что термин «обед» и повторяющиеся строки появляются, когда имя пользователя позволяет сказать «обеденный», а также имя «обед» в его профиле. Таким образом, запрос перечисляет их дважды. – webmasters

+1

@webmasters Как я уже сказал, строка, в которой имя пользователя «lunchy» получает значение sort_col 1, а строка, в которой профиль содержит «обед», получает значение sort_col из 2. Следовательно, две строки не являются точными дубликатами и не делятся на операцию UNION. –

+0

Ty очень много для его очистки. Есть ли способ, чтобы имя пользователя «lunchy» удаляло его строку профиля из запроса или что-то в этом роде? В основном найти решение, чтобы обойти это? – webmasters