Не могу составть запрос.

CMD

Новичок
Не могу составть запрос.

Никак не получается составить запрос с участием нескольких таблиц.
Структура таблиц такая:

(таблица данных о поисках)
1) searches
- id
- keyword
- date
...

(таблица данных о кликах)
2) clicks
- id
- keyword
- date
...


надо получить в одном запросе количество поисков и кликов сгруппированные по датам поиска... чтото бьюсь рыбой об лед и не получается.

Пробовал разные варианты, нечто вроде:


Код:
SELECT searches.date AS Day,
COUNT(searches.id) AS Searches,
COUNT(clicks.id) as Clicks
FROM searches
LEFT JOIN clicks ON clicks.date = searches.date
GROUP BY Day ORDER BY Day DESC
а на выходе почему-то получаю данные в колонке Clicks идентичные колонке Searches.

нид хелп.

Вот этот запрос работает но я не хочу использовать вложенные запросы.

Код:
SELECT searches.date AS `date`,
count(searches.id) AS `searches`,
(SELECT count(clicks.id) FROM clicks WHERE clicks.date = searches.date ) AS `clicks`
FROM searches
GROUP BY 1 
ORDER BY 1 DESC
 

Clubber

Новичок
По-моему лучше этот запрос разделить на 2 отдельных запроса. Декартово призведение таблиц тут не к месту.
 

CMD

Новичок
хм если разделить на две то данные придется считать в пхп а я как раз этого хотел избежать (данные типа клик ратио, средняя цена клика за дату, общее количество денег за дату итп)
 

partizan

Новичок
Re: Не могу составть запрос.

Автор оригинала: CMD
а на выходе почему-то получаю данные в колонке Clicks идентичные колонке Searches.
Причем эти данные, походу, произведение кол-ва кликов и поисков для каждой даты

-~{}~ 03.08.06 17:49:

Я в posgre сделал бы одним запросом так:

Создал viewы:

PHP:
CREATE view clicks_by_date AS
 SELECT date,count(id) as clicks_count FROM clicks

CREATE view searches_by_date AS
 SELECT date,count(id) as searches_count FROM clicks
Ну, а потом:
PHP:
SELECT searches.date,clicks_count,searches_count FROM
 views_by_date, searches_by_date
WHERE views_by_date.date=searches_by_date.date
 

vovik

Новичок
Re: Re: Не могу составть запрос.

Автор оригинала: partizan
Причем эти данные, походу, произведение кол-ва кликов и поисков для каждой даты
Ничего удивительного. Уберите группировку и посчитайте пальцем, так и будет.

А вот так будет правильный ответ:
SELECT searches.date AS Day,
COUNT(DISTINCT searches.id) AS Searches,
COUNT(DISTINCT clicks.id) as Clicks
FROM searches
LEFT JOIN clicks ON clicks.date = searches.date
GROUP BY Day ORDER BY Day DESC
 

Nutty

Новичок
конечно:)
куда более эффективно создавать временные таблицы....
 

Clubber

Новичок
имхо тут более эффективным может быть только использование двух запросов, а затем слияние по дате как по ключу массива.
 

CMD

Новичок
хм все таки разбил на несколько запросов а потом результаты загнал в один общий массив. Может можно было сделать как то иначе хз :)
 

NiGhT_GhOsT

Новичок
Не получается многотабличный запрос!

SELECT comments.*, users.login FROM comments,users WHERE comments.hotel='$id' AND users.id=comments.hotel

У меня есть таблица содержащая комментарии к гостиницам, в ней есть поле user в котором ID юзера, оставившего сей коммент. Есть таблица с собственно юзерами в ней есть поле login.

Думаю вы уже поняли, я хочу за 1 запрос выдать комментарии в собранном виде, т.е. чтобы там к каждому комменту добавился ник юзера, но этот запрос почему-то везде лепит один и тот-же ник. А не выбирает для каждой записи свой. В чем у меня ошибка?
 
Сверху