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

0
jayjayreddick 18 Apr. 2018 im 07:33

4 Antworten

Beste Antwort

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.

1
Owen 18 Apr. 2018 im 04:41

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
1
lucumt 18 Apr. 2018 im 04:40
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;
1
harish patel 18 Apr. 2018 im 04:49
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.

0
Wils 18 Apr. 2018 im 04:52