mysql список по категориям 3 таблицы

я использую, чтобы сделать список продуктов из базы данных mysql.

мой стол:


klantartikels: 
 klantart_art_nummer klantart_klant_id 
 29216 1
 15151 1
 18215 2

артикели
 art_naam art_nummer art_cat_id
 artnaam1 29216 12
 artnaam2 15151 11
 artnaam3 18215 6

categorie
 cat_id cat_naam
 12 Категория 1
 11 категория2
 6 категория3 

таблица klantartikles содержит определяемые пользователем продукты

когда пользователь с идентификатором » 1 » переходит на свою страницу списка, я хочу отобразить их следующим образом

 
категория 1
 artnaam1

catgory2
 art_naam2

так далее.

может что-то вроде этого?

$subcatsql = mysql_query ("SELECT * 
От klantartikels AS k
Внутреннее соединение artikels как a 
На a.art_nummer = k.klantart_art_nummer 
Где k.klantart_klant_id = ' 1 ' группа по a.art_cat_id") или die (mysql_error());

извините за мой плохой английский

большое спасибо 😉

1 ответ

  1. Вы можете использовать JOINдля этого:

    SELECT art.*, cat.cat_naam as category_name FROM artikels art JOIN categorie cat ON art.art_cat_id = cat.cat_id JOIN klantartikels kart ON kart.klantart_art_nummer = art.art_nummer WHERE kart.klantart_klant_id = '1'
    

    Вы можете получить доступ ко всему из artikelsтаблицы, и из результата, вы можете получить доступ к имени категории по: category_name

    РЕДАКТИРОВАТЬ

    Ответ на дополнительный вопрос::

    // FETCH FROM THE DATABASE
    
    $theArray = array();
    while($row = mysql_fetch_array($query))
    {
        $category = $row["category_name"];
        $art_naam = $row["art_naam"];
    
        if(isset($theArray[$category]))
            array_push($theArray[$category], $art_naam);
        else
            $theArray[$category] = array("0" => $art_naam);
    }
    
    // PRINT IT
    
    foreach($theArray as $category => $item)
    {
        print "<h1>" . $category . "</h1>";
        foreach($item as $name)
        {
            print "<div>" . $name . "</div>";
        }
    }