|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день! 
Возникла проблема. Есть таблица вида 
Id товара | Название товара | Код товара | Код производителя 
Код товара - уникален, код производителя - может быть одинаковымдля разных товаров (такие товары зовутся "аналогами"). 
Надо одновременно и выбрать записи из таблицы, и узнать, есть ли у них аналоги. 
Делаю: 
SELECT p.*, a.product_id as analog 
FROM products as p 
LEFT JOIN products as a ON (a.код_завода=p.код_завода AND a.product_id!=p.product_id) 
GROUP BY p.product_id 
Возникает проблема - в таблице около 60 000 записей, и когда таблица таким образом сама на себя джойнится, обработка запроса сильно затягивается. Что можно сделать в данной ситуации? 
Заранее благодарю.
Неактивен

А что мешает сделать что-то типа
SELECT <разные поля>, GROUP_CONCAT(<поля аналогов>) as analogs
FROM table
GROUP BY <разные поля>
Если хотите делать через самообъединение - нужно, чтобы был хороший
индекс на таблице, который максимально будет использовать все ограничения.
Если ограничений нет (так, как Вы написали) - то хотя бы ключи, по которым
Вы объединяете таблицы.
Неактивен
Ограничения есть. Там добавляется нечто вроде:
Название товара LIKE (%0445%)
AND
Код товара LIKE (%0445%)
Записи после выборки отправляются в php. Идет перебор, и если значение индекса $result['analogs'] есть NULL, то считается, что аналогов нет. Не совсем понял про GROUP_CONCAT. Если не сложно - поясните пожалуйста. Почитал документацию, не разобрался.
Неактивен

Пусть у Вас есть таблица вида
a | b
-----
1 | 1
1 | 2
2 | 1
2 | 2
2 | 3
Тогда 
SELECT a, GROUP_CONCAT(b) as gc
FROM table GROUP BY a
выведет
a | gc
------
1 | 1,2
2 | 1,2,3
Неактивен