SQL inner join - Abfrage Problem

creativeheadz

Erfahrenes Mitglied
Hallo,
ich versuche grad eine Abfrage mittels" inner join" und "sum()" zu gestalten, jedoch ist das Resultat nich so wie ich es mir vorstelle...

Ziel:

Ich habe ein Produkt in meiner Datenbank und Nutzer sollen dieses Produkt als Lesezeichen hinzufügen können und mir als Admin der Seite soll nun angezeigt werden, wie viele Nutzer, entsprechende Produkte hinzugefügt haben.

Aufbau:

Ich habe dazu 2 Tabellen mit denen ich arbeite:

- products
- groups


In der Tabelle products sind alle Produkte eines admins (folgend =DEALER_ID)

In der Tabelle groups sind die Lesezeichen also die Produkte eingetragen die Nutzer als solche gekennzeichnet haben.

Ich habe Testweise 3 Produkte in der Tabelle products hinterlegt.

In der groups ist 1 Datensatz vorhanden mit QUANTITY = 3

Folglich sollte ausgegeben werden:

Produkt 1 = 3
Produkt 2 = 0
Produkt 3 = 0

Mir wird jedoch folgendes ausgegeben:

Produkt 1 = 3
Produkt 2 = 3
Produkt 3 = 3

Ansatz:


PHP:
	$query = mysql_query("SELECT 	groups.DEALER_ID, 
									groups.PRODUCT_ID,
									products.PRODUCT_ID,
									products.DEALER_ID,
									SUM(groups.QUANTITY) as counted_products,
									products.PRODUCT_TITLE,
									products.IMG,
									products.STATUS,
									products.TIMESTAMP_END
									
									FROM groups INNER JOIN products 
									
									WHERE  products.DEALER_ID='".$d_id."' && products.STATUS='1' GROUP BY products.PRODUCT_ID ");


" SUM(groups.QUANTITY) as counted_products " soll mir nun die Anzahl der jeweiligen Lesezeichen ausgeben.

While Schelife:

PHP:
while($products = mysql_fetch_object($query)){

echo $products->PRODUCT_TITLE.'<br>' ;

echo $products->counted_products.'<hr>' ;


}

Eine Fehlermeldung bekomme ich nicht.

Kann mir jemand helfen? Ich habs nicht so mit inner joins

Gruß
 
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.


Auf den ersten Blick:
item: Beim INNER JOIN fehlt der ON-Teil. Die 2 Tabellen sind so nicht miteinander verbunden
item: Lösche alle Felder ausser der Produkt-id und dem SUM() aus dem SELECT-Teil
 
Hey,
ich bin dein Tutorial einmal durchgegangen,leider erhalte ich keine Error Meldungen. Auch phpmyadmin gibt mir kein Fehler aus.

Wie gehe ich nun weiter vor?
 
Ach ja,
das habe ich auch gemacht:

PHP:
	$query = mysql_query("SELECT 	groups.PRODUCT_ID,

									SUM(groups.QUANTITY) as counted_orders
									
									FROM groups INNER JOIN products 
									
									ON products.DEALER_ID='".$d_id."' && products.STATUS='1' GROUP BY products.PRODUCT_ID");
 
Leider aber falsch

der ON-Teil beinhaltet die Verbindung der beiden Tabellen.
Der WHERE-Teil die Bedingungen die Eingrenzung der Daten

SQL:
SELECT
    -- Deine Felder
FROM
    groups 
    INNER JOIN products 
        ON groups.PRODUCT_ID = products.PRODUCT_ID
WHERE
    products.DEALER_ID='{$d_id}' 
    AND products.STATUS='1'
GROUP BY
    products.PRODUCT_ID
 
Zuletzt bearbeitet von einem Moderator:
Ersteinmal vielen Dank für deine Bemühungen zur späten Stunde :)

Nun hat sich mein Ergebnis verändert. Jedoch wird jetzt nur der Datensatz angezeigt der welcher auch einen Eintrag in groups hat. Die beiden anderen Producte werden einfach komplett ausgeblendet. Diese sollen jedoch witerhin angezeigt werden nur halt mit mit dem Wert 0
 
Dan ändere von INNER JOIN nach LEFT JOIN, wobei du die Tabelle products als Grundlage nimmst
SQL:
FROM
    products 
    LEFT JOIN groups
        ON groups.PRODUCT_ID = products.PRODUCT_ID
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück