2016-09-24 2 views
0

Ich verwende ein Filtersystem, um Produkte zu kategorisieren. Die Filter werden zusammen mit den Produktergebnissen angezeigt und sind statische Links, mit denen Benutzer ihre Auswahl eingrenzen können.Erstellen einer Abfrage innerhalb einer Abfrage

Ich habe es geschafft, alle Filter innerhalb einer Abfrage anzuzeigen. Allerdings würde ich gerne ein Nummerierungssystem für jeden Filter hinzufügen. d.h. eine Zahl nach jedem Filter, die angibt, wie viele Ergebnisse angezeigt werden, wenn der Filter ausgewählt oder entfernt wird.

  • Hose (21)
  • Shirts (17)
  • T-Shirts (34)

diese Abfrage wie

Meine Filter ist

$qry = mysqli_query("SELECT * FROM categories"); 

Aber dann was ich erreichen möchte, ist

while($row = mysqli_fetch_assoc($qry) { 
    $cat_id = $row['cat_id']; 
    $qry1 = mysqli_query("SELECT * FROM products WHERE category=$cat_id"); 
    $num_results = mysqli_num_rows($qry1); 
    $filter[$cat_id] = array('cat_name'=>$row['cat_name'],'results'=>$num_results); 
} 

So versuche ich, die oben mit nur einer Abfrage oder sogar 2, wenn notwendig, aber nicht mehr als 30 (da es 30 Filter, dh eine Abfrage für jeden Filter wäre nicht effizient)

zu erreichen gibt es etwas entlang der Linien von

$qry = mysqli_query("SELECT *,count(SELECT * FROM products WHERE category=cat_id) FROM categories"); 

ich seine kenne eine bizare Abfrage, aber ich meine, ist es etwas, was die Ergebnisse einer anderen Abfrage in einer Abfrage zu zählen?

+0

Sie nie die Abfrage für eine Sache –

+0

ausgeführt ich ein Array mit dem CAT_NAME und NUM_RESULTS schaffen wollte – Source

+0

ok kann ich PDO in meiner Antwort verwenden? Ich hasse mysqli, wenn das ok ist – Laith

Antwort

0

Also im Grunde, was ich verstehe ist, dass Sie neben jedem Katalognamen wollen Sie die Anzahl der Ergebnisse für diesen Katalog .Hier ist, was ich denke, dass Ihnen helfen kann: Was Sie verwenden sollten, ist Group By Funktion in Ihrer Abfrage, dies wie:

$qry = mysqli_query("SELECT * , COUNT(id) As ProductNumber FROM products GROUP BY category); 

das id Feld ist der Primärschlüssel in der Tabelle, die ich in meinem DB haben, ändern Sie es mit der, die Sie haben.

Mehr über Gruppen von hier: Group By

Lassen Sie mich wissen, ob das von Ihnen geholfen, oder wenn Sie Hilfe benötigen es in Ihnen bei der Umsetzung. Hinweis: PDO wurde nicht verwendet.

1

davon aus, dass Ihre Kategorienamen Spalte gestattet category_name Sie, indem Sie auf eine Zählung und eine Gruppe nutzen könnten beitreten

SELECT a.category_name , count(*) 
FROM category as a 
inner join products as b on b.category =a.cat_id 
group by a.category_name 
+0

Wow, ich habe auf etwas wie das gehofft, es wird mich sehr umarbeiten, aber wenn es funktioniert, dann bist du großartig und vielen Dank. – Source

+0

@ Quelle gut, wenn meine Antwort richtig ist, bitte markieren Sie es als akzeptiert – scaisEdge

Verwandte Themen