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, 18: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
  #2 (permalink)  
Alt 21-09-2003, 18: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 18:49 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 21-09-2003, 19: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, 19: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, 19: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, 19: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, 20: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, 20: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, 21: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

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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

Plates native PHP template system

Plates ist ein natives PHP-Vorlagensystem, das schnell, einfach zu verwenden und einfach zu erweitern ist.

24.05.2019 Berni | Kategorie: PHP/ Framework
Maqetta Open Source  HTML5-Editor ansehen Maqetta Open Source HTML5-Editor

Einen WYSIWYG-Editor zur visuellen Erstellung von Userinterfaces in HTML5 (Drag-and-Drop)

13.05.2019 Berni | Kategorie: HTML5/ EDITOR
NodeBB

NodeBB ist eine Foren-Software auf NodeJS-Basis

13.05.2019 Berni | Kategorie: PHP/ Forum PHP Software
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:33 Uhr.