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

10 Gründe, warum das Todesstern-Projekt gescheitert ist
10 Gründe, warum das Todesstern-Projekt gescheitert istDie Todesstern-Projekte sind spektakulär gescheitert. Lernen Sie von den Fehlern des Imperiums und bewahren Sie Ihre Projekte davor, der dunklen Seite der Macht zu verfallen!

24.11.2020 | Berni

Projektmanagement-Grundlagen Was ist ein PMO?
Projektmanagement-Grundlagen Was ist ein PMO?In unserer Infografik erfahrt ihr es.

02.11.2020 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

21.10.2020 Berni | Kategorie: PHP/ Anzeigenmarkt
Sendeplan Script inkl. Wunsch- und Grußbox + Kick-System + Bewerbungssystem

Das professionelle Sendeplan PHP Script inkl. Wunsch- und Grußbox + Kick-System für dein Webradio. Der übersichtliche Sendeplan bietet deinen Moderatoren und Zuhörern die perfekte Übersicht der aktuellen Shows! Du kannst nicht nur Sendungen eintragen, s

20.10.2020 drcomputer | Kategorie: PHP/ Web Radio
Newsmanager 2

Der Newsmanager 2 ist sehr Vielfältig und kann News schreiben, Newsletter versenden und RSS Feeds in einem erzeugen.

20.10.2020 Stephan_1972 | Kategorie: PHP/ News
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:20 Uhr.