Нужно сделать выборку из нескольких таблиц базы. Проблема в том, что в одной из таблиц при сопоставлении находится несколько записей и из-за этого строки на выдаче дублируются. Нужно выбрать только одну. До сих пор путаюсь в INNER LEFT RIGHT - поможете раскидать всё по-феншую? Код (PHP): SELECT a.virtuemart_product_id, a.published, b.product_name, c.product_price, d.virtuemart_media_id, e.file_url FROM bsocm_virtuemart_products AS a INNER JOIN bsocm_virtuemart_products_ru_ru AS b ON b.virtuemart_product_id = 89 LEFT JOIN bsocm_virtuemart_product_prices AS c ON c.virtuemart_product_id = 89 LEFT JOIN bsocm_virtuemart_product_medias AS d ON d.virtuemart_product_id = 89 LEFT JOIN bsocm_virtuemart_medias AS e ON e.virtuemart_media_id = d.virtuemart_media_id WHERE a.virtuemart_product_id = 89 Из таблицы bsocm_virtuemart_product_medias нужно выбрать только одно значение поля virtuemart_media_id, соответствующую условию virtuemart_product_id = 89 P.S.: в конкретном случае, у товара одно название, одна цена, но несколько картинок...
Код (PHP): SELECT a.virtuemart_product_id, a.published, b.product_name, c.product_price, (SELECT virtuemart_media_id FROM bsocm_virtuemart_product_medias WHERE virtuemart_media_id=a.virtuemart_product_id LIMIT 1) as d e.file_url FROM bsocm_virtuemart_products AS a INNER JOIN bsocm_virtuemart_products_ru_ru AS b ON b.virtuemart_product_id = a.virtuemart_product_id LEFT JOIN bsocm_virtuemart_product_prices AS c ON c.virtuemart_product_id = a.virtuemart_product_id LEFT JOIN bsocm_virtuemart_medias AS e ON e.virtuemart_media_id = d.virtuemart_media_id WHERE a.virtuemart_product_id = 89 по идее вот так или всё то же что и у тебя но в SELECT перед d.virtuemart_media_id, добавить DISTINCT
Человек один тут намекнул, что дело в правильной расстановке JOIN - LEFT, RIGHT, INNER. К сожалению, лень не позволила человеку договорить до конца, а сам так и не понял что имелось ввиду.