php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 21-09-2003, 19:34
Sirius
 Newbie
Links : Onlinestatus : Sirius ist offline
Registriert seit: Sep 2003
Beiträge: 36
Sirius ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit SELECT, SUM und WHERE

Hi @ all,

erstmal etwas zur Datenbankstruktur
In den Datenbanktabellen "f_user", "f_user_group" sind folgende, für meine Frage wichtige, Spalten enthalten:

________________________________
Tabelle: "f_user"
*************
user_id

user_points
________________________________
Tabelle: "f_user_group"
*******************
user_id

group_id
________________________________

Nun zu meinem Problem
Ich wollte mit folgender Abfrage den Gesamtwert (von Spalte "user_points") aller Zeilen, in denen die "group_id=99" ist, ermitteln:


$sql = mysql_query("SELECT f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_points");
while ($myrow = mysql_fetch_array($sql)) {
echo $myrow[user_points];
}

Das Ergebnis das ich erhalte ist 03050 es sollte aber 80 sein.
Ahhhhhhhhh einen ganze nacht Programmieren und ein ganzen tag rechersche im Internet haben keinen Erfolg gebracht.
Wieso werden die zahlen nicht addiert?
Ich bin für jede hilfe sehr dankbar.


MfG Sirius
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 21-09-2003, 19:45
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wäre nicht group by f_users.user_ID richtig?
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

Geändert von MelloPie (21-09-2003 um 19:49 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 21-09-2003, 20:24
Sirius
 Newbie
Links : Onlinestatus : Sirius ist offline
Registriert seit: Sep 2003
Beiträge: 36
Sirius ist zur Zeit noch ein unbeschriebenes Blatt
Standard

SELECT f_users.username, f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_id


Das Ergebnis das ich erhalte ist 3050000000000 es sollte aber 80 sein.
Es werden zwar nur die User mit der "group_id" 99 ausgewählt aber es wird nicht addiert.

warum nur
Mit Zitat antworten
  #4 (permalink)  
Alt 21-09-2003, 20:28
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Code:
SELECT
  u.user_id, SUM(u.user_points) punkte, g.group_id
FROM
  f_user_groups g
  INNER JOIN f_users u USING (user_id)
WHERE
  g.group_id=99
GROUP BY g.user_id
poste mal bitte das ergebnis
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #5 (permalink)  
Alt 21-09-2003, 20:44
Sirius
 Newbie
Links : Onlinestatus : Sirius ist offline
Registriert seit: Sep 2003
Beiträge: 36
Sirius ist zur Zeit noch ein unbeschriebenes Blatt
Standard

user_id /punkte /group_id
2 /30 /99
3/ 50 /99
5 /0 /99
12 /0 /99
32 /0/ 99
34 /0 /99
36 /0 /99
51 /0 /99
69 /0/ 99
79 /0/ 99
82 /0/ 99

SQL Abfrage in phpMyAdmin gestellt
Mit Zitat antworten
  #6 (permalink)  
Alt 21-09-2003, 20:48
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

lass dir mal die spalte user_id nicht ausgeben
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #7 (permalink)  
Alt 21-09-2003, 21:16
Sirius
 Newbie
Links : Onlinestatus : Sirius ist offline
Registriert seit: Sep 2003
Beiträge: 36
Sirius ist zur Zeit noch ein unbeschriebenes Blatt
Standard

SELECT
SUM(u.user_points) punkte, g.group_id
FROM
f_user_group g
INNER JOIN f_users u USING (user_id)
WHERE
g.group_id=99
GROUP BY g.user_id

Das Ergebniss ist das gleiche in grün nur ohne user_id




SELECT f_users.user_points, SUM(user_points)AS punkte FROM f_users, f_user_group WHERE f_users.user_id=f_user_group.user_id AND group_id=99 GROUP BY f_users.user_id

Ergebniss:

user_points /punkte
30 /30
50 /50
0 /0
0 /0
0 /0
0 /0
0 /0
0 /0
0 /0
0 /0
0 /0

auch keine 80

hmmmm


Sirius
Mit Zitat antworten
  #8 (permalink)  
Alt 21-09-2003, 21:23
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

das group by ist auch noch falsch, wenn du die summe der punkte aller user einer gruppe haben willst, musst du auch nach group_id gruppieren
Code:
SELECT
  SUM(u.user_points) punkte
FROM
  f_user_groups g
  INNER JOIN f_users u USING(user_id)
WHERE
  g.group_id=99
oder für alle gruppen
Code:
SELECT
  g.group_id, SUM(u.user_points) punkte
FROM
  f_user_groups g
  INNER JOIN f_users u USING(user_id)
GROUP BY
  g.group_id
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #9 (permalink)  
Alt 21-09-2003, 22:30
Sirius
 Newbie
Links : Onlinestatus : Sirius ist offline
Registriert seit: Sep 2003
Beiträge: 36
Sirius ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank !!!

Für Deine Hilfe mrhappiness, hier ein kleiner Pokal von mir als Anerkennung für gute Arbeit




MfG Sirius
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

Microweber CMS

Open source, drag and drop website builder

13.01.2020 Berni | Kategorie: HTML5/ EDITOR
PhoneGap Apps mit JS, CSS3 und HTML5 erstellen ansehen PhoneGap Apps mit JS, CSS3 und HTML5 erstellen

PhoneGap, Framework zur Erstellung hybrider Applikationen für mobile Endgeräte.

13.01.2020 Berni | Kategorie: App-Entwicklung
Bo)Tickets

Bo)Tickets bietet Ihnen eine Schnittstelle für Kundenanfragen an. In dem Script definieren Sie Supportbereiche, also zum Beispiel „Technik, Buchhaltung, Support“. Ihre Kunden können dann über ein Formular eine Anfrage abschicken.

31.12.2019 bocombo | Kategorie: PHP/ Ticketsystem
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35 Uhr.