Ergebnis 1 bis 4 von 4

Thema: SQL Query zum addieren einer Spalte mit bes. Bedingung

  1. #1
    Kaiserliche Hoheit
    Registriert seit
    15.07.2005
    Ort
    Hagen (NRW)
    Beiträge
    1.515
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard SQL Query zum addieren einer Spalte mit bes. Bedingung

    Moin zusammen,

    ich benötige einen SQL Query, der mir die Summe einer Spalte (punkte), grupiert nach einer id (benutzer_id) zurückgibt.

    Bis dahin ist das für mich einfach.

    Jetzt kommt aber noch eine zusätzliche Bedingung dazu: weiterhin soll er nur die Zeilen jeweils aufsummieren, wo der summierungstyp (highscore_type) "high" bzw. "low" ist.
    Ob der Typ high oder low ist lässt sich allerdings nur aus einer zweiten Tabelle entnehmen. Die richtige Zuordnung der Zeilen geschiet über eine eindeutige ID (gid).

    Zum besseren Verständnis hier einmal ein paar Dummy Daten samt Struktur:
    Code:
    -- 
    -- Tabellenstruktur für Tabelle `test_punkte`
    -- 
    
    CREATE TABLE `test_punkte` (
      `ID` int(10) NOT NULL auto_increment,
      `gid` int(10) NOT NULL default '0',
      `benutzer_id` int(10) NOT NULL default '0',
      `punkte` float NOT NULL default '0',
      PRIMARY KEY  (`ID`)
    ) TYPE=MyISAM;
    
    -- 
    -- Daten für Tabelle `test_punkte`
    -- 
    
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (1, 1, 1, 10);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (2, 1, 1, 10);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (3, 1, 2, 20);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (4, 1, 2, 20);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (5, 2, 1, 10);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (6, 2, 1, 10);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (7, 2, 2, 20);
    INSERT INTO `test_punkte` (`ID`, `gid`, `benutzer_id`, `punkte`) VALUES (8, 2, 2, 20);
    
    -- --------------------------------------------------------
    
    -- 
    -- Tabellenstruktur für Tabelle `test_spiel`
    -- 
    
    CREATE TABLE `test_spiel` (
      `gid` int(8) NOT NULL auto_increment,
      `highscore_type` varchar(4) NOT NULL default 'high',
      PRIMARY KEY  (`gid`)
    ) TYPE=MyISAM;
    
    -- 
    -- Daten für Tabelle `test_spiel`
    -- 
    
    INSERT INTO `test_spiel` (`gid`, `highscore_type`) VALUES (1, 'high');
    INSERT INTO `test_spiel` (`gid`, `highscore_type`) VALUES (2, 'low');
    Ein query ala
    Code:
    SELECT
    p.gid, p.benutzer_id, SUM(p.punkte) as total, s.highscore_type
    FROM test_punkte p
    LEFT JOIN test_spiel s ON (p.gid = s.gid)
    GROUP BY (p.benutzer_id)
    HAVING s.highscore_type = 'low'
    funktioniert leider nicht.

    Habt ihr eine Idee wie ich das lösen kann ohne die Trennung der beiden Tabellen aufzuheben?

    Gruß,
    Lukas
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Zoggerforum.de Betreuer * Mod @ ibforen.de * Admin @ daoc-ds.de
    ICQ Nummer kann via PN erfragt werden

  2. #2
    Kaiser(in)
    Registriert seit
    09.12.2005
    Alter
    29
    Beiträge
    2.496
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Code:
    SELECT test_punkte.gid, test_punkte.benutzer_id, SUM(test_punkte.punkte) AS total, test_spiel.highscore_type
    FROM test_punkte, test_spiel
    WHERE test_punkte.gid = test_spiel.gid
    AND test_spiel.highscore_type = 'low'
    GROUP BY test_spiel.benutzer_id;
    habs aber nit getestet
    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

  3. #3
    Kaiserliche Hoheit
    Themenstarter

    Registriert seit
    15.07.2005
    Ort
    Hagen (NRW)
    Beiträge
    1.515
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    vielen Dank, scheint in ersten Tests genau das zu liefern was ich brauchte - da fragt man sich bei meinem Lösungsansatz warum kompliziert versuchen wenn es auch einfach geht
    Zoggerforum.de Betreuer * Mod @ ibforen.de * Admin @ daoc-ds.de
    ICQ Nummer kann via PN erfragt werden

  4. #4
    Kaiser(in)
    Registriert seit
    09.12.2005
    Alter
    29
    Beiträge
    2.496
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    hehe :P
    Sei immer du selbst. Außer du kannst Batman sein. Sei immer Batman!

Ähnliche Themen

  1. Erstellung einer IF Bedingung mit einer flash-detection
    Von 2337 im Forum Job Forum - Jobs für Grafiker, Programmierer und Webmaster
    Antworten: 4
    Letzter Beitrag: 28.07.2008, 11:34
  2. MYSQL Datentyp einer spalte herausfinden
    Von DaJuly im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 19.07.2007, 19:29
  3. Den Wert einer Zelle in Tab1 in einer Spalte in Tab2 suchen.
    Von bewehh im Forum Forum für alle anderen Programmiersprachen
    Antworten: 2
    Letzter Beitrag: 01.06.2007, 18:50
  4. Daten aus nur einer Spalte einer Tabelle in Array speichern
    Von FaFoo im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 25.07.2006, 16:32
  5. Zahlen addieren
    Von Knüps im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 16.02.2006, 16:01

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •