Der einfachste Weg ist wahrscheinlich, die Liste der Kategorien zu ziehen, iterieren und ihre angeschlossenen Produkte ziehen. (Dh mehrere Abfragen.)
Zum Beispiel (Pseudo-Code):
$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'];
}
}
Wenn Sie das alles in einer Abfrage tun, wollen Sie so etwas wie tun:
$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'];
}
Dann können Sie iterieren über die Ergebnismenge und ziehen Sie den Kategorienamen heraus, wenn er sich ändert.
Es mag eine raffiniertere, elegantere Art geben, SQL zu schreiben, um alles zu tun, bevor Sie es aus der Datenbank bekommen, aber ich bin nicht so schlau. ;)
Hinweis: Beispiele verwenden Pseudocode. Ich benutze eine Abstraktion Klasse mysql, die wie funktioniert:
$db->query("SELECT stuff");
$db->multi_result(); // returns 2d-associative array
ich kann dann foreach($db->multi_result() as $row)
, die super faul und genial.
Ich kann den Code für die Abstraktionsschicht veröffentlichen, wenn Sie möchten.
Veröffentlichen Sie die Abfrage, die Sie verwenden, damit jemand PHP bereitstellen kann, um die Daten herauszuziehen. –
Ich habe keine Abfrage, meine Frage ist welche Abfrage zu verwenden. Der Post enthält meine Datenbank-Setup (die enthaltenen Daten) und wie ich es anzeigen möchte, was sollte ich noch hinzufügen? – sam