2013-12-06 2 views
0

У меня есть база данных продуктов в MySQL и я пытаюсь просмотреть содержимое с помощью PHP. В настоящее время я работаю с 3 таблицами: prod, div и prodCatDiv. В таблице prod хранятся данные для каждого продукта, в то время как таблица div содержит идентификаторы для каждого из 5 подразделений моей компании. Таблица prodCatDiv представляет собой таблицу соединений с внешними ключами, относящуюся к идентификатору двух других таблиц.Объединить несколько экземпляров одного и того же идентификатора продукта, которые имеют несколько значений для разных внешних ключей?

Мои таблицы настроены так:

prod 
- 
prodID | prodName | prodImg | prodDesc 

div 
- 
divID | divName 

prodCatDiv 
- 
prodID | catID | divID 

My SQL заявление выглядит следующим образом:

"SELECT * FROM prod LEFT JOIN prodCatDiv ON prod.prodID=prodCatDiv.prodID ORDER BY prodUpdate DESC"; 

Однако, когда я пытаюсь заполнить страницу с данными из этих таблиц, я получить несколько списков из одного и того же prodID. Итак, если у меня есть prodID = 1, приписываемый как divID = 1, так и divID = 2, он перечисляет этот продукт дважды с первым и вторым делением на каждое перечисление. Как объединить эти два списка так, чтобы он показывал один prodID = 1 как атрибут BOTH divID = 1 AND divID = 2?

У меня есть таблица на странице для отображения результатов. В этой таблице есть столбцы для каждого деления, которые «проверены», чтобы пользователь мог видеть, в каких делениях находится каждый продукт. В настоящее время он создает две строки для продукта, если этот продукт состоит из двух разделов. Я хочу, чтобы этот продукт на основе prodID был одной строкой с галочкой в ​​обеих столбцах разделения, к которым это относится.

+0

Пожалуйста, покажите пример того, что вы хотите, чтобы результаты выглядеть? –

+0

У меня есть таблица на странице для отображения результатов. В этой таблице есть столбцы для каждого деления, которые «проверены», чтобы пользователь мог видеть, в каких делениях находится каждый продукт. В настоящее время он создает две строки для продукта, если этот продукт состоит из двух разделов. Я хочу, чтобы этот продукт на основе prodID был одной строкой с галочкой в ​​обеих столбцах разделения, к которым это относится. – therealbiglou

ответ

0

Вы можете объединить значения и создать один столбец со списком DivId с:

SELECT p.*, group_concat(pcd.DivId separator ', ') as DivIds 
FROM prod p LEFT JOIN 
    prodCatDiv pcd 
    ON p.prodID = pcd.prodID 
GROUP BY p.ProdId 
ORDER BY prodUpdate DESC; 
Смежные вопросы