Запрос к нескольким таблицам с объединением

regii

Новичок
Запрос к нескольким таблицам с объединением

Есть несколько таблиц:
2 таблицы A и B с контентом(id, name, date - названия полей в обеих таблицах одинаковое)
1 таблица С с комментариями к элементам A и B(id, element_id-по этому полю связь с A и B, и еще несколько полей)
Необходимо выбрать записи из A и B с наибольшим количеством комментариев, причем сами записи должны быть не старше N дней.

Чтобы выбрать с количеством комментов, делаю так:
PHP:
SELECT COUNT(C.id) AS comments_count, A.id AS a_id, A.name AS a_name, A.date AS a_date, B.id AS b_id, B.name AS b_name, B.date AS b_date
FROM C
LEFT JOIN A ON C.element_id=A.id
LEFT JOIN B ON C.element_id=B.id
GROUP BY C.element_id
ORDER BY comments_count
LIMIT 0, 10
Как выбрать c учетом поля date в таблицах A и B в этом же запросе?
И еще вопрос - можно ли объединить в результатах запроса поля A.name и B.name в одно поле(тот же вопрос касается и даты и айдишников этих элементов) и, как я понимаю, подобное объединение позволит сделать WHERE date> в запросе, что повлияет на выборку из всех таблиц?

-~{}~ 09.07.09 13:56:

Получилось таким образом:
SELECT
A.date AS a_date, B.date AS b_date
COUNT(C.id) AS comments_count, A.id AS a_id, A.name AS a_name, A.date AS a_date, B.id AS b_id, B.name AS b_name, B.date AS b_date
FROM C
LEFT JOIN A ON C.element_id=A.id
LEFT JOIN B ON C.element_id=B.id
WHERE a_date < 'first date' OR b_date>'some date'
GROUP BY C.element_id
ORDER BY comments_count
LIMIT 0, 10

Работает, вроде бы, как надо. Единственное что смущает, что в результатах запроса будут присутствовать поля с NULL (или не стоит смущаться?)
 

Krishna

Продался Java
Что за бредовая структура? Если C.element_id=3, то как мы узнаем это к А или к В?
 

regii

Новичок
Забыл сказать, что айдишники в таблицах A и B не пересекаются
 

prolis

Новичок
Re: Запрос к нескольким таблицам с объединением

Автор оригинала: regii
Единственное что смущает, что в результатах запроса будут присутствовать поля с NULL
[sql]
select IFNULL(a.name,b.name) as name, IFNULL(a.date,b.date) from table
[/sql]
 
Сверху