S3.Blog

21 Ноября 2024
A A A   RSS-лента
"Я знаю, что ничего не знаю, но многие не знают и этого". Сократ [?].

MySQL: JOIN с группировкой

Дата последнего изменения: 2 Сентября 2010
Метки статьи: MySQL
С форума: "Необходимо сделать джоин таблицы по некоторым ключам, но из получившихся записей нужна только последняя запись. Как ограничить? Куда совать группировку поля?"
 

Да, порой появляется нужда из присоединяемой таблицы выбрать только уникальные строки. Для этого в MySQL существует такая конструкция:
Ниже приведенные примеры не являются показателем хорошего стиля программирования, так как на больших объёмах данных mysql-сервер начнет тормозить и нервничать.

Оптимальное решение - это сделать несколько отдельных запросов, а потом обработать их своей софтверной логикой (C++, Perl, PHP, и т.д.)

SELECT * FROM t1 
LEFT JOIN (SELECT c1, MAX(c2) AS c2 FROM t2 GROUP BY c1) AS t2 ON t1.c1=t2.c1;
SELECT * FROM t1 
LEFT JOIN (SELECT c1, SUM(c3) AS c3 FROM t2 GROUP BY c1 LIMIT 5) AS t2 ON t1.c1=t2.c1;
SELECT * FROM t1 
LEFT JOIN (SELECT * FROM t2 GROUP BY c1) AS t2 ON t1.c1=t2.c1;
Это простое вложение, но можно сделать и более сложное:
SELECT t1.*, t2.*
FROM t1
JOIN
(
  SELECT *
  FROM
  (
    SELECT *, MAX(date) AS date
    FROM t2
    GROUP BY c1
  ) AS t3
  JOIN t4 ON t4.id=t3.id
) AS t5 ON t5.id=t1.id



Похожие материалы:




 
  Имя *:   Решите пример *: =
 
Полужирный Курсив Подчеркнутый Перечеркнутый
 
Вставить изображение Сделать цитатой Вставить ссылку Вставить код

Вставить смайл
 
 

 



© S3.Blog: Если критикуешь, не предлагая решения проблемы, то ты становишься частью этой проблемы.