|
|
|
| У меня такая проблема: не работают в скрипте (php 4.4.1, mysql 4.0.25) ни 'DELETE FROM 'table' ' ни 'TRUNCATE TABLE 'table'' в чем может быть глюк?
Другие запросы в этом же скрипте (INSERT, SELECT, etc) нормально работают.
И еще - пишу статистику, есть 3 таблицы:
названия страниц { page_id int, name varchar(150) }
посещения { page_id int, user_id int, date_v date }
посещения спец страниц { user_id }
Нужна такая инфа для каждой страницы за определенный промежуток времени:
+----------------------+------------------------+----------------------------+------------------------------------+
| назв. страницы | уник. посещения | неуник. посещения | посещения спец страниц |
+----------------------+------------------------+----------------------------+------------------------------------+
| ....... | ............ | ......... | .............. |
+----------------------+------------------------+----------------------------+------------------------------------+
Долго мучился :) и написал такой запрос:
SELECT
pages.name,
COUNT(visits.user_id ) AS n_un,
COUNT( DISTINCT visits.user_id ) AS un,
COUNT( spec.user_id ) AS num_ord
FROM visits
LEFT JOIN pages ON visits.page_id = pages.page_id
LEFT JOIN spec ON .user_id = visits.user_id
WHERE (
visits.date_vis
BETWEEN "2005-01-01"
AND "2005-05-01"
)
GROUP BY visits.doorway_id;
|
Может кто хорошо в SQL разбирается скажет мне - этот запрос верен? (запрос что-то выдает, но проверить не могу :( в таблицах >300 000 записей) | |
|
|
|
|
|
|
|
для: mannnz
(15.03.2006 в 15:03)
| | У MYSQL есть замечательное слово LIMIT!
SELECT ...
FROM ...
WHERE ....
LIMIT start, num;
num - сколько строк вывести
start - с какой по счету строки
А когда запросы не работают, надо смотреть mysql_error(); | |
|
|
|
|
|
|
|
для: Trianon
(15.03.2006 в 15:21)
| | LIMIT знаю и использую, я не могу проверить, т.к. подсчет происходит по n записям (n <= 300 000).
А про mysql_error(); я не вспомнил :) , спасибо. Буду пробовать. | |
|
|
|
|
|
|
|
для: mannnz
(15.03.2006 в 15:03)
| | Это непонятно:
названия страниц { page_id int, name varchar(150) }
посещения { page_id int, user_id int, date_v date }
посещения спец страниц { user_id }
|
Имелось в виду так?
pages { page_id int, name varchar(150) }
visits { page_id int, user_id int, date_v date }
spec { user_id }
|
Если так, то непонятна последняя таблица. Почему в ней только один столбик, и какую связь она задает? | |
|
|
|
|
|
|
|
для: Trianon
(16.03.2006 в 10:47)
| | >Имелось в виду так?
pages { page_id int, name varchar(150) }
visits { page_id int, user_id int, date_v date }
spec { user_id }
|
Да.
>Если так, то непонятна последняя таблица. Почему в ней
>только один столбик, и какую связь она задает?
На самом деле она такого вида:
spec { user_id int, referer varchar(150) }
|
Кто пришел и откуда. Это заходы на определенную страницу.
Она нужна определения сколько посетителей заходило на эту (spec) страницу из тех, которые заходили на другие (из visits). | |
|
|
|
|
|
|
|
для: mannnz
(17.03.2006 в 22:38)
| | Что-то мне сомнительно , что
COUNT(visits.user_id ) AS n_un,
и
COUNT( DISTINCT visits.user_id ) AS un,
будут работать в одном запросе.
Что является первичным ключом таблицы visits? | |
|
|
|
|
|
|
|
для: Trianon
(17.03.2006 в 22:52)
| | >Что-то мне сомнительно , что
>COUNT(visits.user_id ) AS n_un,
>и
>COUNT( DISTINCT visits.user_id ) AS un,
>будут работать в одном запросе.
Так я ж считаю по visits.doorway_id
....
GROUP BY visits.doorway_id;
|
>Что является первичным ключом таблицы visits?
Первичного ключа нет. | |
|
|
|