Сложности с исключающей выборкой в MySQL
Есть три таблицы:
product
| product_id | model | price | quantity |
|---|---|---|---|
| 25 | ghx | 100 | 20 |
| 32 | thx | 130 | 0 |
| 65 | r61 | 170 | 21 |
| 85 | bh8 | 120 | 20 |
| 95 | bh8 | 140 | 20 |
product_description
| product_id | name | description |
|---|---|---|
| 25 | ваза | что-то есть |
| 32 | тумба | что-то есть |
| 65 | стол | что-то есть |
| 85 | стол | что-то есть |
| 95 | стол | что-то есть |
product_analogs
| product_id | analog_id |
|---|---|
| 65 | 85 |
| 65 | 95 |
| 85 | 65 |
| 85 | 95 |
| 95 | 65 |
| 95 | 85 |
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=f11b509f68e482c98790e674df730b6f
Проблема с третьей таблицей, если без неё нужно выбрать товары, то пишу запрос:
SELECT * FROM product p
LEFT JOIN product_description pd
ON (p.product_id = pd.product_id)
WHERE p.quantity > 0
GROUP BY p.product_id ORDER BY p.price ASC
В итоге получаю выборку товаров с product_id: 25,85,95,65
Но есть задача прикрутить к запросу третью таблицу (аналоги), с таким условием, чтобы в выборке исключить аналоги товаров (65,85,95 - это аналоги друг друга), то есть в итоге должен получиться результат выборки такой: 25,85
То есть товары 95 и 65 исключаются, так как они указаны как аналоги для 85, а 85 взят потому что у него цена ниже чем у 65 и 95.
Просьба помочь кто знает как это сделать в запросе, каких-то вариантов у меня нет, не осиливаю.