В базе данных есть следующие таблицы:
CREATE TABLE orders(
id INT(10) PRIMARY KEY NOT NULL AUTO_INCREMENT,
order_number VARCHAR(100) NOT NULL
);
CREATE TABLE products(
id INT(10) PRIMARY KEY NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL
);
CREATE TABLE orders_products (
order_id INT(10) NOT NULL,
product_id INT(10) NOT NULL
);
Нужно вывести два любых заказа, у которых максимальное количество общих товаров.
Вот мой вариант, но какой-то велосипедный, полагаю можно как-то проще и понятнее это написать:
SELECT a.order_id,COUNT(b.product_id) as count
FROM orders_products a, orders_products b
WHERE a.product_id = b.product_id AND a.order_id != b.order_id
GROUP BY a.order_id
ORDER BY count DESC
LIMIT 2