Mysql MySQL запрос, в котором одна и та же таблица участвует дважды

borzih2

Новичок
Не могу сообразить. Есть таблица users, в ней есть поле user_id и другие поля, описывающие пользователей. Есть таблица tovar с полями:

tovar_id - ID - товара
prodavec_id - ID продавца товара
pokupatel_id - ID покупателя товара
другие строки, описывающие товар

Надо извлечь один или несколько товаров по ID + инфу о продавцах и покупателях (по одной строчке на каждый товар). Например, извлечь 10 товаров с максимальным ID. Если написать так:

SELECT * FROM users, tovar
WHERE user_id = prodavec_id
OR user_id = pokupatel_id
ORDER BY tovar_id DESC LIMIT 10

то нужная задача выполняется, но по каждому товару возвращается 2 строки и далее их нужно "объединять". Можно ли вернуть строки, чтобы в каждой была инфа и о покупателе, и о продавце?
 

Фанат

oncle terrible
Команда форума
PHP:
SELECT * FROM users 
LEFT JOIN tovar t1 ON user_id = t1.prodavec_id 
LEFT JOIN tovar t2 ON user_id = t2.pokupatel_id 
ORDER BY tovar_id DESC LIMIT 10
 

WMix

герр M:)ller
Партнер клуба
Фанат а не наоборот ли? чувствую что задачка неполная, что непонятно о какой из покупок идет речь
(по одной строчке на каждый товар).
PHP:
SELECT t.*, 
	u1.lastname as 'любой продавец этого товара', 
	u2.lastname as 'любой покупатель этого товара' 
FROM tovar t
LEFT JOIN user u1 ON u1.user_id = t.prodavec_id
LEFT JOIN user u2 ON u2.user_id = t.pokupatel_id
GROUP BY t.tovar_id 
ORDER BY t.tovar_id DESC 
LIMIT 10
 
Сверху