Najprostszym sposobem jest prawdopodobnie pobranie listy kategorii, iteracja i wyciągnięcie załączonych produktów. (Ie kilka zapytań.)
Na przykład (pseudokod):
$result = fetch_assoc("SELECT category_id FROM categories");
foreach($result as $row)
{
echo $row['category_id'];
$result2 = fetch_assoc("SELECT product_id FROM products");
foreach($result2 as $row2)
{
echo $row2['product_id'];
}
}
Jeśli chcesz zrobić to wszystko w jednym zapytaniu można zrobić coś takiego:
$result = fetch_assoc("SELECT product_id, category_id FROM products p JOIN categories c ON p.category_id = c.category_id ORDER BY c.category_id ASC");
$last = null;
foreach($result as $row)
{
# Output the category whenever it changes
if($row['category_id'] != last)
{
echo $row['category_id'];
$last = $row['category_id'];
}
echo $row['item_id'];
}
Następnie można iteracyjne nad zestawem wyników i wyciągnij nazwę kategorii po każdej zmianie.
Może istnieć bardziej wyrafinowany, elegancki sposób pisania kodu SQL, aby zrobić wszystko, zanim dostaniesz go z bazy danych, ale nie jestem aż tak inteligentny. ;)
Uwaga: w przykładach użyto pseudokodu. Używam mysql klasę abstrakcji, który działa jak:
$db->query("SELECT stuff");
$db->multi_result(); // returns 2d-associative array
mogę wtedy foreach($db->multi_result() as $row)
, który jest bardzo leniwy i niesamowite.
Mogę opublikować kod warstwy abstrakcji, jeśli chcesz.
Opublikuj zapytanie, którego używasz, aby ktoś mógł dostarczyć PHP do wyciągnięcia danych. –
Nie mam zapytania, moim pytaniem jest to, jakiego zapytania użyć. Post zawiera moją konfigurację bazy danych (zawarte w niej dane) i sposób, w jaki chcę ją wyświetlać, co jeszcze mam uwzględnić? – sam