X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с запросом
happyhand
happyhand
Topic Starter сообщение 6.11.2010, 1:03; Ответить: happyhand
Сообщение #1


У меня в базу складываются данные пользователей, зашедших на страницу: дата, ip, cookie ну и там ещё по мелочи.
Вывод делаю по датам:
[PHP]
SELECT * FROM guests WHERE date='$z' ORDER by datefull DESC
[/PHP]
Нужно сделать, чтобы повторяющиеся посетители (по кукам) выводились в единичном количестве.
Пробовал через DISTINCT, но он работает только по одному полю, как я понял. Вобщем, нужно вывести только уникальных посетителей, а если есть повторы, то последнего с его ip, датой и всеми остальными данными.
Не поможете, как так сделать?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 6.11.2010, 1:46; Ответить: Mulder_hb
Сообщение #2


Не зная стурктуры таблицы очень сложно создавать запросы. Но общий запрос будет наподобие такого:
SELECT `ip`, max(`date`) as `date`, `id` FROM `table` GROUP BY `id` ORDER BY `date` DESC;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 6.11.2010, 10:23; Ответить: happyhand
Сообщение #3


Структура такая:id,ip,cookie,datefull,browser,date.
Или имеется в виду что-то другое?
datefull - это полная дата момента посещения (date('Y-m-d-H-i-s')), date - просто дата (date('Y-m-d')), по ней осуществляется вывод по определённой дате.
На моей статистической странице идёт вывод посещений по какой-то определённой дате по такому запросу:
[php]SELECT * FROM guests WHERE date='$z' ORDER by datefull DESC[/php],
где $z - это нужная дата.
Так вот при таком подходе мне выдаётся всё содержимое базы за какую-то дату. Есть посетители, которые заходят по нескольку раз, это видно по повторяющимся кукам. Нужно, чтобы повторяющиеся посетители объединялись в одного.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
zidan
zidan
сообщение 6.11.2010, 12:08; Ответить: zidan
Сообщение #4


Может, в эту сторону посмотреть http://www.mysql.ru/docs/man/Group_by_functions.html? Mulder, правильно подметил - GROUP BY. Хотя, при возможности, я бы в БД не записывал одинаковых пользователей.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 6.11.2010, 19:03; Ответить: Mulder_hb
Сообщение #5


sergey-g, покажите структуру таблицы. Наберите в консоли мускула
SHOW CREATE TABLE `tbl_name`\G;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 7.11.2010, 1:10; Ответить: happyhand
Сообщение #6


CREATE TABLE `guests` (
`id` int(10) NOT NULL auto_increment,
`ip` varchar(100) NOT NULL,
`cookie` varchar(255) NOT NULL,
`datefull` datetime NOT NULL,
`browser` varchar(100) NOT NULL,
`pay` varchar(20) NOT NULL,
`session` varchar(100) NOT NULL,
`date` date NOT NULL,
`machine` varchar(100) NOT NULL,
`query` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=231 DEFAULT CHARSET=cp1251
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 7.11.2010, 13:59; Ответить: Mulder_hb
Сообщение #7


Ну в общем, как я и писал выше. Делать group by. Чтобы вывести посетителя в одном экземпляре, вам надо определить время его последнего захода max(`datefull`), а затем вывести остальные данные соответствующие этому времени. Т.к. у меня негде отладить запрос, то отладка остается вам.
SELECT `id`,`ip`, `cookie`,`browser`, `pay`,
`session`,`machine`,`query`, max(`datefull`) as `datefull`
FROM `guests` WHERE `date` = $z
GROUP BY `id` ORDER BY `datefull` DESC;
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 7.11.2010, 17:54; Ответить: happyhand
Сообщение #8


На скрине результат.
Как и что отлаживать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 7.11.2010, 19:45; Ответить: Mulder_hb
Сообщение #9


sql-запросы отлаживаются в консоли sql-сервера. Не можете сами, дайте мне доступ к бд или слейте эту таблицу в дамп и дайте мне.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
happyhand
happyhand
Topic Starter сообщение 7.11.2010, 21:51; Ответить: happyhand
Сообщение #10


Ладно, бог с ним, пусть уж будет как есть, не думал, что будут такие сложности, хотел просто сделать для своего удобства. Спасибо за внимание.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 725 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1702 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2341 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12503 24.7.2020, 17:02
автор: -JamesSmips-
Открытая тема (нет новых ответов) Помогите с поиском доноров
3 tehno_music 3354 4.11.2019, 17:15
автор: goblin78


 



RSS Текстовая версия Сейчас: 20.4.2024, 17:34
Дизайн