У меня есть три таблицы: projects
, proj_categ
а также categories
,
projects(id, title)
proj_categ(id, proj_id, categ_id)
categories(id, title)
Таблица proj_categ
соединяет две таблицы (projects
а также categories
) как показано ниже. Один проект может иметь одну или несколько категорий.
PHP & MySQL
$projects = mysql_query("SELECT * FROM projects");
while($projrow=mysql_fetch_array($projects))
{
$projid = $projrow['id'];
$categories= mysql_query("SELECT * FROM categories JOIN proj_categ ON categories.id=proj_categ.categ_id where proj_id='".$projid."'");
while($caterow=mysql_fetch_array($categories))
{
echo $caterow['title']." ";
echo $projrow['title']."<br/>";
}
}
К вашему сведению: HTML-код
$caterow['title']
быть вставленным в <li class="gallery-item Singapore Indonesia">
$projrow['title']
быть вставленным в <span class="title">Title</span>
<li class="gallery-item Singapore Indonesia">
<div class="gallery-contents">
<div id="id1" class="thumbnail gallery-trigger">
<span>
<span class="title">Title</span>
<img src="https://web-answers.ru/wp-content/uploads/2019/02/project.jpg" alt="" />
</span>
</div>
</div>
</li>
Результат
projects.title |categories.title
+---------------+-----------------
"Testing 1" | "Singapore""Testing 2" | "Malaysia""Testing 3" | "Indonesia""Testing 4" | "Singapore""Testing 4" | "Malaysia""Testing 5" | "Singapore""Testing 5" | "Malaysia""Testing 5" | "Indonesia""Testing 6" | "Indonesia""Testing 7" | "Malaysia""Testing 7" | "Indonesia"
Что я хочу
Я не хочу повторный проект, я хочу объединить один и тот же проект, но с разными категориями. Пытался GROUP BY
но это не работает для меня. Надеюсь, что некоторые из вас могли бы дать мне несколько советов. Спасибо!
SELECT GROUP_CONCAT(categories.title) as "categories.title",
proj_categ.title as "projects.title"FROM categories
JOIN proj_categ ON categories.id=proj_categ.categ_id
WHERE proj_id=$projid
GROUP BY proj_categ.title;
Почему вы не используете только один запрос
$projects = mysql_query("SELECT projects.title as proj_title,categories.title as cat_title FROM projects JOIN proj_categ ON projects.id=proj_categ.proj_id JOIN categories ON categories.id=proj_categ.categ_id");
while($projrow=mysql_fetch_array($projects))
{
echo $projrow['proj_title']." ";
echo $projrow['cat_title ']."<br/>";
}
Также mysql_ * устарела и удалена из PHP 7 mysqli_ * или PDO.
$res = array();
$projects = mysql_query("SELECT * FROM projects");
while($projrow=mysql_fetch_array($projects))
{
$projid = $projrow['id'];
$res[$projid] = array('title' => $projrow['title'], 'categories' => array());
$categories= mysql_query("SELECT * FROM categories JOIN proj_categ ON categories.id=proj_categ.categ_id where proj_id='".$projid."'");
while($caterow=mysql_fetch_array($categories))
{
echo $caterow['title']." ";
echo $projrow['title']."<br/>";
$res[$projid]['categories'][] = $caterow['title'];
}
}