У меня три таблицы в laravel, одна - средняя таблица:
CREATE TABLE ордеров (id INT (10) ПЕРВИЧНЫЙ КЛЮЧ, НЕ НУЛЬ AUTO_INCREMENT, order_number VARCHAR (100) NOT NULL);
CREATE TABLE products (id INT (10) ПЕРВИЧНЫЙ КЛЮЧ NOT NULL AUTO_INCREMENT, заголовок VARCHAR (100) NOT NULL);
CREATE TABLE orders_products (order_id INT (10) NOT NULL, product_id INT (10) NOTNULL);
Я хочу получить два верхних заказа, у которых есть общие продукты, большее число здесь не имеет значения,
То, что считается, это заказ C, который имеет 5 заказов, 1,3,4, 5,7 и orderF, которые также имеют 1,2,3,4,5,6,8, поэтому у них есть общие 1,3,3,5, это то, что я хочу иметь, даже если у других есть один 2,7,9,12,13,15,17,23 и другие 2,4,6,8,9,11,12,14,15,16,17 это не то, что я хочу, но у большинства есть больше продуктовобщего
Большое спасибо
Это дает неточные результаты:
$orders =
DB::table('orders')
->select('orders.id as ordid', 'orders.order_number as order_number',
DB::raw('COUNT(orders_products.product_id) as counter' ) )
->join('orders_products', 'orders.id', '=', 'orders_products.order_id')
->join('products as prod1', 'prod1.id', '=',
'orders_products.product_id')
->join('products as prod2', 'prod1.id', '=', 'prod2.id')
->groupBy( 'orders.order_number')
->orderByRaw('MAX(orders_products.product_id) DESC')
->limit(2)
->get();