SELECT *
FROM yourTable
WHERE doc IN (
SELECT doc
FROM yourTable
WHERE product = 1)
Подзапрос находит все документы, которые заказали продукт 1. Затем основной запрос находит все строки с этими документами.
или
SELECT t1.*
FROM yourTable AS t1
JOIN (
SELECT DISTINCT doc
FROM yourTable
WHERE product = 1) AS t2
ON t1.doc = t2.doc
DISTINCT
необходимочтобы предотвратить дублирование всех строк по числу раз, которое doc
возвращается подзапросом.
, если таблица велика, я рекомендую второй метод, поскольку MySQL имеет некоторые печально известные проблемы производительности с запросами WHERE xxx IN (subquery)
.