php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.08.2011, 10:22  
Neuer Benutzer
 
Registriert seit: 01.08.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
kami1983 befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Probleme mit SUM

Hallo an alle,

Ich habe ein Problem mit SUM und komme absolut nicht weiter.

Ich habe eine Tabelle mit den Feldern:

id (int)
user_id (int)
product_id (int)
amount (int)
date (datetime)

in dieser Tabelle sind NUR Einträge mit der user_id 8

nun bin ich aber mit der Userid 10 eingelogt und möchte die Anzahl aller von mir verkauften Produkte Summieren (user_id = 10)

Hier meine Abfrage:

PHP-Code:

    $sql 
"SELECT id FROM products WHERE brand_id = 1;";

    
$clsDb->query($sql);

    
$sql2 "SELECT sum(amount) as totalAmount FROM sales WHERE user_id = ".$_SESSION['id']." ";



    
$i=0;

    while(
$result $clsDb->getResult()) {

        if(
$i==0) {

            
$sql2 .= " AND product_id = ".$result['id']." ";

        } else {

            
$sql2 .= " OR product_id = ".$result['id']." ";

        }

        
$i++;

    }

    
$sql2 .= ";"
$sql2 mit echo ausgeben ergibt dann folgendes:

SELECT sum(amount) as totalAmount FROM sales WHERE user_id = 10 AND product_id = 1 OR product_id = 2 OR product_id = 3 OR product_id = 4 OR product_id = 5 OR product_id = 6 OR product_id = 7 OR product_id = 8 OR product_id = 9 OR product_id = 10 OR product_id = 11 OR product_id = 12 OR product_id = 13 OR product_id = 14 OR product_id = 15 OR product_id = 16 OR product_id = 17 OR product_id = 18 OR product_id = 19 OR product_id = 20 OR product_id = 21 OR product_id = 22 OR product_id = 23 OR product_id = 24 OR product_id = 25 OR product_id = 26 OR product_id = 27 ;


Nun das Problem:
ich habe in der DB keinen Eintrag mit der user_id 10 trotzdem aber gibt er mir als $result['totalAmount'] ein Ergebnis... genau das was bei der user_id 8 rauskommen würde.

Habe es schon mit GROUP BY user_id versucht aber da passiert auch nix


Würde mich sehr über einen Denkanstoß freuen.


Beste Grüße
André
kami1983 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.08.2011, 10:26  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Beim AND/OR Mix solltest du Klammern setzen...

WHERE user_id = 10 AND (product_id = 1 OR product_id = 2 ...)

Diese OR-Liste kannst du auch mit
product_id IN (1,2,3,...)
umsetzen
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:28  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

du musst unbedingt mit Klammern in der SQL-Abfrage arbeiten

und zwar musst du die Ganzen mit OR verbundenen Felder einklammern

Code:
SELECT sum(amount) as totalAmount FROM sales 
WHERE user_id = 10 AND 
( 
  product_id = 1 OR product_id = 2 OR 
  product_id = 3 OR product_id = 4 OR 
  product_id = 5 OR product_id = 6 OR 
  product_id = 7 OR product_id = 8 OR
  product_id = 9 OR product_id = 10 OR 
  product_id = 11 OR product_id = 12 OR 
  product_id = 13 OR product_id = 14 OR 
  product_id = 15 OR product_id = 16 OR 
  product_id = 17 OR product_id = 18 OR 
  product_id = 19 OR product_id = 20 OR 
  product_id = 21 OR product_id = 22 OR 
  product_id = 23 OR product_id = 24 OR 
  product_id = 25 OR product_id = 26 OR
  product_id = 27
)
so ungefähr muss deine Abfrage aussehen

Edit - allerdings hat istegelitz recht - den Part innerhalb der Klammer kannst du sinnvoll zusammenfassen - etwa

Code:
SELECT sum(amount) as totalAmount FROM sales 
WHERE user_id = 10 AND product_id < 28
dann brauchst du die Klammer nicht mehr
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (01.08.2011 um 10:32 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:31  
Neuer Benutzer
 
Registriert seit: 01.08.2011
Beiträge: 9
PHP-Kenntnisse:
Anfänger
kami1983 befindet sich auf einem aufstrebenden Ast
Standard

Suuuuuper...

Vielen Dank euch beiden

Endlich zeigt er mir nichts an
kami1983 ist offline   Mit Zitat antworten
Alt 01.08.2011, 10:32  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Diese OR-Liste kannst du auch mit
product_id IN (1,2,3,...)
umsetzen
Oder direkt mit einer Einzigen Abfrage und JOIN arbeiten anstatt aus der ersten Abfrage die zweite zusammenzubasteln.

http://dev.mysql.com/doc/refman/5.1/de/join.html
fab ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
[Erledigt] Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
Win+Firefox alles ok, IE oder Linux: Probleme vollderdude PHP Tipps 2009 6 02.01.2009 16:17
[Erledigt] Probleme mit iFrame rocco HTML, Usability und Barrierefreiheit 1 28.12.2008 17:44
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme bei der Installation von Turck MMCache tomx992 PHP-Fortgeschrittene 2 27.09.2005 20:31
Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum