Artikel zählen in SQL, Count alleine reicht nicht

Hallo,
ich habe folgendes Problem:

Meine Tabellen sehen so aus:

Tabelle 1 (warenkorb):
warenkorb_id | artikel_id | anzahl | datumzeit

Tabelle 2 (artikel tabelle)
artikel_id | basisartikel_id

Tabelle 3 (basisartikel)
basisartikel_id | basisartikel_name

Jeweils die erste spalte kann nur einmal vorkommen, alle anderen mehrfach.

Ich möchte im Grunde folgendermaßen zählen:

SELECT
basisartikel.artikelname,
artikel.basisartikel_id,
count(warenkorb.artikel_id)
FROM (db.warenkorb
JOIN db.artikel
ON artikel.artikel_id = warenkorb.artikel_id)
JOIN db.basisartikel
ON basisartikel.basisartikel_id = artikel.basisartikel_id
WHERE warenkorb.created >= "2015-07-01 00:00:00"
AND warenkorb.created <= "2015-07-31 23:59:59"
GROUP BY artikel.basisartikel_id
ORDER BY count(artikel.basisartikel_id) DESC LIMIT 250

So funktioniert das auch, aber es soll noch etwas dazu kommen:
Das Feld Anzahl in der Tabelle Warenkorb bezieht sich auf die Häufigkeit mit der dieser Artikel im Warenkorb liegt.
Das Problem ist also:
Derzeit wird so gezählt, dass die Anzahl nicht berücksichtigt wird. Es wird halt nur einmal gezählt, aber wenn die Anzahl höher als 1 ist, stimmt bei meiner bisherigen Art der Abfrage das Ergebnis nicht. In dem Fall müsste die jeweilige artikel_id so oft gezählt werden, wie die Anzahl ist.

Wie muss ich die Anfrage umschreiben, dass die Anzahl mit einberechnet wird?
Ich habe gerade einen Knoten im Kopf.

Reicht es nicht das ergebnis von count() einfach mit der Anzahl zu multiplizieren?

Davon mal abgesehen:

Ich bin über deine Tabellen Struktur ein bisschen verwirrt. Wie fügst du mehrere Artikel zu einem Warenkorb hinzu? Wenn “warenkorb_id” nur einmal vorkommen darf, dann kann ein Warenkorb ja nur einen Artikel (artikel_id) enthalten… oder versuchst du mit dem basisartikel zeug irgendwas rumzutricksen?

In einem Artikel-Warenkorb System würde ich eine M:N Beziehung zwischen den Warenkörben und den Artikeln erwarten. Und bei einer M:N Beziehung ist es immer so, dass man die beiden Tabellen Artikel und Warenkorb hat, die kein Feld haben, welches das jeweils andere referenziert (wie es bei einer 1:n oder 1:1 Beziehung der Fall wäre), und es wird stattdessen eine Relationstabelle angelegt, die die Relationen herstellt:

Tabelle "article":
+--------+-------------------------+-----------------------+
| art_id | art_name                | art_description       |
+--------+-------------------------+-----------------------+
| 1      | Deutschländer Würstchen | Knackige Würstchen    |
| 2      | Toastbrot               | Weißes Brot           |
| 3      | Nutella                 | Der leckere Aufstrich |
+--------+-------------------------+-----------------------+

Tabelle "warenkorb"
+--------+-----------+
| wkb_id | wkb_owner |
+--------+-----------+
| 1      | Ansgar    |
| 2      | Lars      |
+--------+-----------+

Tabelle "rel_article_warenkorb"
+--------+--------+--------+
| wkb_id | art_id | anzahl |
+--------+--------+--------+
| 1      | 3      | 100    |
| 1      | 2      | 30     |
| 2      | 3      | 1      |
| 2      | 1      | 5      |
+--------+--------+--------+

Es gibt noch ne Spalte die jedem User zugeordnet werden kann etc. Ich hab die Tabellen hier der Einfachheit halber auf das nötigste reduziert und der Verständlichkeit halber umbenannt. Es funktionieren auch mehrere Artikel. das System hab nicht nicht ich gebaut, sondern ich lese gerade selber fremden Code. Die Tabelle ist so gegeben, an der kann ich daher nichts rütteln.

count(warenkorb.artikel_id)*anzahl würde aber falsch multiplizieren, wegen dem GROUP BY artikel.basisartikel_id. Der multipliziert dann nur mit dem ersten gefundenen wert, aber die anzahl zusammenzählen geht ja auch nicht.

Die Summenfunktion sollte hier helfen.

Ich danke euch! :hail:
Dass mir Sum nicht eingefallen ist, schiebe ich mal auf die Tatsache, dass am Freitag Freitag war und heute Montag ist. :ps:


Ups… Mir ist gerade noch ein Fehler aufgefallen…

Verschiedene artikel_id können die gleiche basisartikel_id haben. Es wird also auch bei meiner ursprünglichen Abfrage falsch, bzw. nicht komplett gezählt.
Ich muss also noch die artikel IDs zusammenaddieren, bei denen die basisartikel_id gleich ist, oder bin ich gerade doof?