Доброго времени суток! Есть три таблицы: objects - объекты с их ID object_photo - ID объектов, ID фотографий (мн-к-мн) photos_objects - ID фотографий и сами фотографии Хочу вывести объект и к нему все возможные фотографии Код (Text): SELECT ob.id_obj, po.full_photo FROM objects AS ob LEFT JOIN object_photo AS op ON ob.id_obj = op.id_object LEFT JOIN photos_objects AS po ON po.id_photo = op.id_photo WHERE ob.id_obj = '1' GROUP BY ob.id_obj Но в итоге получаю только одно фото к объекту, а если убираю group by - дубли объектов с фотками. Как можно решить?
Сколько фото может иметь один объект? Хочу понять целесообразность мн-к-мн. Может лучше использовать 1-к-мн и все проблемы отпадут сами собой?
где-то до десяти. Да, тут пожалуй 1-к-мн. Но допустим, есть планировки и квартиры, вот тут может все дублировать и тогда мн-к-мн нужно. Так как же в такой ситуации лучше вывод данных сделать?
Не может. Планировка редко бывает прям вот "заводская". Тту котел поставили отопительный, там батареи перевесили, тут положение ванны поменяли, там балкон застеклили. Просто подумайте, что проще - гемороиться с мн-к-мн, при условии что оно понадобится в 1% случаев, или сделать 1-к-мн, при рассчете что в 1% случаев будет рождаться дубликат? Два зла. Выбирайте меньшее для вас. Учитывая также, что таблицы-коннекторы в мн-к-мн чуть что начинают распухать просто как на дрожжах. object_photo в вашем случае. Просто если используется мн-к-мн, зачастую это значит, что что-то не так в структуре базы. Ибо почти всегда это можно нормально разрулить на 1-к-мн и щелкать по ключам, без мусора и супер-джоинов. Взгляните на фейсбук - казалось бы сложная дура. А там запросы к базе элементарнейшие - простенькие селекты и инсерты/апдейты. Без джоинов вообще.
В том то и дело, что , планировка - это просто расположение комнат и метраж. Получается, что у 20 домов, могут совпадать планировки. И,без мн-к-мн я выхода не вижу. Поэтому вопрос - реально ли вывести данные, в моем варианте, без вложенных запросов? Добавлено спустя 27 минут 47 секунд: Нашел ответ на хабре (habrahabr.ru/qa/11916/)