Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Вывод не повторяющихся строк из mysql


Автор: xarakiry 26.6.2009, 13:03
Есть таблица tmp
В ней помимо всех остальных есть столбцы id,url,userid и другие
Мне надо вывести последних записей, при этом чтобы ни url ни userid не повторялись.
Пожалуйста подскажите как мне это сделать, чтобы было оптимальнее.
Конечно могу сделать через цикл на php, это на мускуле запрос будет работать быстрее.

Автор: lelik133 26.6.2009, 14:27
Код

select * from tmp group by url,userid

Автор: xarakiry 26.6.2009, 14:35
Цитата(lelik133 @ 26.6.2009,  14:27)
Код

select * from tmp group by url,userid

Это не то что надо

Автор: lelik133 26.6.2009, 14:49
да!?
ну тогда вы не объяснили что хотели

Автор: gta4kv 26.6.2009, 16:01
Код

SELECT DISTINCT url FROM tmp;

если это то что надо, то перепишите под свой запрос полностью

Автор: xarakiry 26.6.2009, 16:46
Цитата(gta4kv @ 26.6.2009,  16:01)
Код

SELECT DISTINCT url FROM tmp;

если это то что надо, то перепишите под свой запрос полностью

DISTINCT(url) подходит только в том случае, если я извлекаю различные только урл, но я же еще написал и про userid.

При извлечении должны быть различными  userid и url

Автор: Akina 26.6.2009, 16:56
Цитата(xarakiry @  26.6.2009,  14:03 Найти цитируемый пост)
Мне надо вывести последних записей, при этом чтобы ни url ни userid не повторялись.

А теперь то же самое, но по-русски.

Автор: xarakiry 26.6.2009, 17:05
)) При выводе из базы в не должны выводится строки которые содержат одинаковые значения url И userid

вот мы берем distinct(url) он покажет строки с разными url.
тоже самое если distinct(userid)

так вот нужно что то типо обьединения, чтобы и url и userid не были повторяющимися

т.е в выводимых строках не должны быть повторяющиеся url и userid

Не должны выводится строки у которых повторяется url и userid

что еще непонятного....

Автор: Akina 26.6.2009, 17:10
Т.е. тебе для каждой пары url и userid нужна только одна строка из всех... какая именно? любая? последняя по полю timestamp? ещё что-то?


Автор: lelik133 26.6.2009, 17:12
непонятно задача сформулирована.
вам надо вывести только те строки в которых встречается уникальная комбинация url и userid ??
тогда может
Код

select *,count(id) as n from tmp group by url,userid having n=1

Автор: xarakiry 26.6.2009, 18:44
 smile 

В таблице есть записи.

У каждой урл есть свой userid

Нужно вывести строки из базы чтобы при выводе не повторялись url и userid
т.е чтобы выводимые данные из ячеек url и userid не повторялись
что то типо 

mail.ru   5
vkontakte.ru 6
stream.ru  19

чтобы не было 

mail.ru 5
mail.ru 5
vkontakte.ru 6
vkontakte.ru 5

Простым языком это звучит так.
Вывести все различные ссылки из url и от различных пользователей userid. Для одного пользователя одна ссылка url, при этом url  не должен совпадать с url другого пользователя.

Автор: Akina 26.6.2009, 19:00
Цитата(xarakiry @  26.6.2009,  19:44 Найти цитируемый пост)
Простым языком это звучит так.

Да блин!!! Кому он нахрен нужен, твой простой язык?
Цитата(xarakiry @  26.6.2009,  19:44 Найти цитируемый пост)
Для одного пользователя одна ссылка url, при этом url  не должен совпадать с url другого пользователя.

Юзеры usr1 и usr2 посетили ссылки url1 и url2. По какому критерию образовать пары???
Юзеры usr1, usr2 и usr3 посетили ссылки url1 и url2. Какого пользователя и по какому критерию отбросить???

Автор: xarakiry 26.6.2009, 19:28
блин, нафигна посетили ????
 
CREATE TABLE `tmp` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `name` text,
  `url` varchar(500) NOT NULL,
  `userid` int(11) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `userid` (`userid`),
  FULLTEXT KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=90 DEFAULT CHARSET=utf8 AUTO_INCREMENT=90 ;

вот база.
никто ничего не посещает!

Выводится строками

Нужно вывести так чтобы не повторялся url и не повторялся userid .

Что не понятного ?

Автор: solenko 26.6.2009, 20:25
xarakiry, пока вы не научитесь задавать вопросы в будете получать неверные ответы от телепатов.

Попробую и я в телепатии попрактиковатся )
Код

select url, max(userid) from tmp group by url


Автор: xarakiry 27.6.2009, 14:39
Цитата(solenko @ 26.6.2009,  20:25)
xarakiry, пока вы не научитесь задавать вопросы в будете получать неверные ответы от телепатов.

Попробую и я в телепатии попрактиковатся )
Код

select url, max(userid) from tmp group by url

Он выводит разные url, при этом userid повторяются.

Надо чтобы при выводе не повторялись userid и url
Надо чтобы к примеру вывелась строка 

mail.ru 5

Вот чтобы строки с url mail.ru и userid 5 не воводились... Опять плохо обьяснил..?

Автор: Photon 28.6.2009, 08:28
Гы-гы..   А кто мешает написать так?

Код

select distinct url, userid from tmp

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)