LEFT JOIN - Problem

Sasser

Erfahrenes Mitglied
Nabend!

Ich habe eine Tabelle (MYSQL) advertise in welcher ein geworbener User steht und davor die ID des Werbers. Die gleiche ID ist in der Tabelle user vorhanden und einem User zugeordnet!

Ich möchte nun eine Statistik ausarbeiten und zählen wie oft, die ID in der Tabelle advertise vorkommt und aus der Tabelle user den Werber ausgeben!

Folgendes funktioniert einfach nicht, obwohl ich mir sicher bin alles richtig gemacht zu haben!

HTML:
SELECT user.user AS user, COUNT(advertiserID.advertise) AS submits 
FROM user 
LEFT JOIN advertise ON advertiserID.advertise = advertiserID.user 
GROUP BY advertiserID.user 
ORDER BY submit DESC 
LIMIT 20
 
Hi,

gewöhn Dir doch bitte mal an, zu beschreiben, was nicht funktioniert. Sprich: Wie sieht das unerwartete Ergebnis denn aus?

Bist Du sicher, dass Du einen LEFT JOIN machen willst und nicht einen INNER JOIN?

LG
 
D.h. also der Code ist korrekt?

Ich bekomme einfach ein Bild ausgegeben, in welchem die Balken fehlen!

PHP:
$db = connect_db ();
$Result = mysql_query ( "SELECT user.user AS user, COUNT(advertiserID.advertise) AS submits FROM advertise LEFT JOIN user ON advertiserID.advertise = advertiserID.user GROUP BY advertiserID.advertise", $db );
mysql_close ( $db );
for ($i = "0", $XWerte = "", $YWerte = ""; $i < mysql_num_rows ( $Result ); $i ++) {
	$Stat = mysql_fetch_object ( $Result );
	$XWerte [] = $Stat->user;
	$YWerte [] = $Stat->submits;
}

Also so funktioniert es, nur wird mir die ID angezeigt!

Wie kann man das etwas umbauen, sodass anstatt der ID der Username steht, welcher in der Tabelle user zu der ID verknüpft ist?

Code:
SELECT `advertiserID`, COUNT(`advertiserID`) AS submits 
FROM advertise 
GROUP BY `advertiserID`
ORDER BY COUNT(`advertiserID`) DESC 
LIMIT 20
 
Hi,

D.h. also der Code ist korrekt?

Habe ich das behauptet?

Ich bekomme einfach ein Bild ausgegeben, in welchem die Balken fehlen!

Wer soll mit dieser Aussage etwas anfangen? Du zeigst nicht, wo Du ein Bild mit Balken generierst. Das ist aber auch erstmal uninteressant. Du musst erstmal prüfen, welche Daten Deine Abfrage liefert. Und dann postest Du das Ergebnis hier bitte und erzählst uns, inwiefern es von Deinen Erwartungen abweicht.

LG
 
Ich mache einfach nochmal eine Abfrage, das wäre zwar bestimmt nicht nötig, ist aber die einzigste Möglichkeit die ich sehe!

Trotzdem Danke

Das funktioniert und ist ja eigentlich auch das gleiche wie mit dem LEFT JOIN:

PHP:
$db = connect_db ();
$Result = mysql_query ( "SELECT `advertiserID`, COUNT(`advertiserID`) AS submits FROM advertise GROUP BY `advertiserID` ORDER BY COUNT(`advertiserID`) DESC LIMIT 20", $db );
mysql_close ( $db );
for ($i = "0", $XWerte = "", $YWerte = ""; $i < mysql_num_rows ( $Result ); $i ++) {
	$Stat = mysql_fetch_object ( $Result );
	$advertiserID = $Stat->advertiserID;
	$db = connect_db ();
	$row = mysql_fetch_assoc ( mysql_query ( "SELECT `user` FROM user WHERE `advertiserID` = '$advertiserID'", $db ) );
	mysql_close ( $db );
	$XWerte [] = $row [user];
	$YWerte [] = $Stat->submits;
}
 
Zuletzt bearbeitet:
Hi,

Das funktioniert und ist ja eigentlich auch das gleiche wie mit dem LEFT JOIN:

Innerhalb einer Schleife für jeden User eine Extraabfrage zu machen ist sch**** und alles andere als das gleiche, wie eine einzige Abfrage mit einem JOIN.
Wenn Du auf meine Antworten bzw. Rückfragen nicht eingehst, kann ich Dir aber auch nicht helfen.

LG
 
Zurück