Объединение нескольких записей в одну запись - PullRequest
0 голосов
/ 23 июля 2011

У меня есть 2 таблицы, в одной из которых перечислены свойства (дома, квартиры и т. Д.), А в другой таблице содержатся имена файлов изображений и идентификатор для ссылки на соответствующее свойство.

Теперь мне нужно объединить их вместе, нотаким образом, что я получаю только один раз информацию о свойстве, а затем число X записей изображений, которые связаны между собой.

У меня был некоторый успех при использовании LEFT JOIN, поскольку я могу выбирать записи,но он возвращает дублирующую информацию для свойства, например, 1 свойство, связанное с 3 изображениями, вернет 3 результата запроса LEFT JOIN и, таким образом, на моей выходной странице напечатает детали 3 раза.

Следующая часть после этогокак распечатать информацию о собственности (которая теперь должна быть единственной) и информацию о нескольких изображениях?

Надеюсь, вы поможете!

1 Ответ

1 голос
/ 23 июля 2011

Вы можете использовать функцию group_concat, чтобы получить список имен файлов. По умолчанию это позволит вам иметь только 1 тыс. Данных в результирующем поле group_concat.

select prop.*, group_concat(filenames) as files
   from properties prop 
   join images on prop.id = images.prop_id
   where prop.owner_id = 'something'
   group by prop.id

Вы можете настроить свойство group_concat_max_len, если вам нужно больше данных в этом поле.

Затем в PHP вы просматриваете итоговый запрос и можете разбить каждый столбец файлов и выполнить цикл по результирующему массиву для отображения изображений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...