2016-12-04 2 views
0

ich eine Tabelle in db haben für die Kunden und ihre GläserCounting ganze DB während für bestimmte SQL Suche

customer_inventory_tbl:

SELECT * FROM customer_inventory_tbl 

+-------+-------+-------+ 
|id(pk) | name | spex | 
+-------+-------+-------+ 
|1  |John |Oval | 
|2  |Steve |Angular| 
|3  |John |Aviator| 
|4  |Kevin |Supra | 
|5  |Jamie |Oval | 
|6  |Ben |Supra | 
+-------+-------+-------+ 

(dies ist eine Möglichkeit, einfachere Version, haha)

Wenn ich John Rekord Ansicht zeigt es

SELECT * FROM customer_inventory_tbl WHERE name=John 

+-------+-------+-------+ 
|id(pk) | name | spex | 
+-------+-------+-------+ 
|1  |John |Oval | 
|3  |John |Aviator| 
+-------+-------+-------+ 

Aber was ich verlangen, wenn Johns Aufzeichnung sehen, es mir zu zeigen,

+-------+-------+-------+-----+ 
|id(pk) | name | spex |count| 
+-------+-------+-------+-----+ 
|1  |John |Oval |2 | 
|3  |John |Aviator|1 | 
+-------+-------+-------+-----+ 

Die „count“ Spalte die Anzahl der Datensätze in der Datenbank, die „Oval“ zum Beispiel hat.

Nun, das ist einfach genug, wenn ich jeden Datensatz in der db zählen wollte, aber wie bekomme ich die Zählung aller Datensätze bei der Suche nach einem bestimmten Namen.

Ich hoffe, dass dieses Gefühl

Antwort

1
select c.*, 
    (
     select count(1) 
     from customer_inventory_tbl 
     where spex = c.spex 
     ) "count" 
from customer_inventory_tbl c; 
0

Als Lösung nach oben erwähnte Beschreibung bitte versuchen Sie es ausführen folgende SQL-Abfrage

SELECT *,(select count(id) from customer_inventory_tbl group by spex) 
as count FROM customer_inventory_tbl WHERE name='John' 

In oben genannten SQL-Abfrage Zählerwert macht durch Unterabfrage abgerufen wird mit Datensätze gruppiert nach Werten der Spex-Spalte mit GROUP BY Klausel.