Ich habe eine Tabelle, die wie folgt aussieht:
Cust_ID . Cust_name . Cust_referred_by
1 Allan 2
2 Blake 3
3 Jen 2
4 Zeke 1
In diesem Szenario wurde Allan von Blake verwiesen. Wie zähle ich, wie viele Empfehlungen jeder Kunde hat? Bisher habe ich diesen Code:
select cust_name, count(cust_referred_by)
from Customer
Ich glaube, ich muss eine Self-Join-Tabelle verwenden, bin mir aber nicht sicher, wie ich sie implementieren soll
4 Antworten
Angenommen, Sie möchten cust_reffered_by für jeden Kunden zählen, können Sie die folgende Abfrage verwenden:
select cust_name, count(cust_reffered_by)
from Customer
group by cust_name
Ich denke, Sie möchten zählen, wie oft ein Kunde angesprochen wurde. Sie können dies mit der folgenden Abfrage erreichen:
select cust_name, count(cust_id)
from Customer
group by cust_name
Ohne weitere Informationen zur Semantik der Tabelle ist es jedoch schwierig, sicher zu sein, wonach Sie suchen.
Sie können dazu group by
und join
verwenden
select a.cust_name, count(b.Cust_ID)
from Customer a
join Customer b on a.Cust_ID=b.Cust_referred_by
group by a.cust_name
You can use this query to get sum of one column values:
$result=mysql_query("SELECT SUM(Cust_referred_by) AS total FROM Customer");
$row = mysql_fetch_array($result);
$sum = $row['total'];
echo $sum;
select
t.Cust_ID,
t.Cust_name,
(select count(s.Cust_ID) from Customer as s where s.Cust_referred_by = t.Cust_ID) as Referred
from Customer as t
Für eine bessere Vielseitigkeit sollten Sie eine Unterabfrage verwenden. Die Verwendung von Gruppieren nach ist ein sehr schlechtes Design, da Sie nicht gleichzeitig nach zwei Spalten gruppieren können.
Verwandte Fragen
Neue Fragen
mysql
MySQL ist ein kostenloses Open-Source-RDBMS (Relational Database Management System), das SQL (Structured Query Language) verwendet. Verwenden Sie dieses Tag NICHT für andere DBs wie SQL Server, SQLite usw. Dies sind verschiedene DBs, die alle ihre eigenen SQL-Dialekte verwenden, um die Daten zu verwalten.