tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
465
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Quests Sohn
    Quests Sohn Quests Sohn ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    43
    Hallo,

    ich komme nicht weiter.

    Ich möchte folgende DB-Abfrage machen:

    PHP-Code:
    SELECT SUM(gesamt*anteil*2) AS geld FROM nutzer WHERE geld >= '$mein_geld' 
    wobei $mein_geld vorgegeben wird (z. B. 345,67) und gesamt und anteil Tabellenspalten
    der Datenbank sind. Alle Werte sind Dezimalzahlen (z. B. "2.50").

    Die Abfrage ergibt einen Fehler.

    Ich denke, das Problem ist, dass ich das gerade erst innerhalb der Abfrage erstellte "geld"
    gleich mit einem vorgegebenen Wert ("$mein_geld") vergleiche, oder?!

    Aber wie kann ich sonst abfragen, wie viele andere Nutzer mehr "geld" haben, als ich
    (sprich der zu vergleichende Nutzer)?
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    Zitat Zitat von Quests Sohn Beitrag anzeigen
    [...]
    Die Abfrage ergibt einen Fehler.
    [...]
    welchen? Tut mir Leid, ich kann nicht Gedanken lesen

    Also an deiner Query an sich, so wie du die gepostet hast, ist an sich nichts falsch. Schreib doch bitte mal die PHP Zeile, in der du die Query wegschickst oder in eine Variable speicherst.

    Wenn ich dich richtig verstehe, dann dürfte dir aber das HAVING besser helfen als dein WHERE.
    Mehr nach deiner Antwort

    Gruß
    Bratkartoffel
    Geändert von Bratkartoffel (20.11.08 um 00:16 Uhr)
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Registriert seit
    Oct 2004
    Ort
    Versmold (NRW)
    Beiträge
    285
    Wie waere es denn, wenn du es einfach vorher in einer variablen querry brechnest und sie dann alst String als Querry uebergibst.
    Das ist ja eigentlich fast nochmal und warum sollte man auch nicht.
     
    "Wer glaubt, etwas zu sein, hat aufgehört, etwas zu werden."
    Sokrates (468 - 399 v.Chr.)

    Read my Blog!


  4. #4
    Avatar von Quests Sohn
    Quests Sohn Quests Sohn ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    43
    Danke erstmal, ich habe die Abfrage umgebastelt, aber sie funktioniert noch immer nicht.

    Also zur Übersicht:
    Ich habe eine Tabelle "nutzer" mit den Feldern

    +--------+---------------+--------------+
    | id | gesamt | anteil |
    +--------+---------------+--------------+
    | 1 | 66.00 | 0.70 |
    +--------+---------------+--------------+
    | 2 | 100.00 | 2.50 |
    +--------+---------------+--------------+
    | 3 | 200.00 | 0.80 |
    +--------+---------------+--------------+

    PHP-Code:
    $mein_wert "92.40"// 66,00 * 0.7 * 2
    $res_vergleich mysql_query("SELECT gesamt, anteil FROM nutzer HAVING SUM(gesamt*anteil*2) >= '$mein_wert'"); 
    $platz mysql_num_rows($res_vergleich); 
    $vergleich mysql_fetch_array($res_vergleich); 
    Das ergibt die Meldung

    "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource"
     

  5. #5
    Avatar von shutdown
    shutdown shutdown ist offline Mitglied Smaragd
    Registriert seit
    Jun 2004
    Beiträge
    1.026
    1. SUM() wie alle Aggregat-Funktionen werden durch HAVING eingeschränkt
    2. HAVING ist nur zulässig, wenn es auch Gruppierungen (GROUP BY) gibt.

    3. Ist das glaube ich alles nicht das, was du eigentlich willst.
    4. Wenn du dein eigentliches Problem beschreiben würdest, könnte man dir schneller helfen.

    5. Nehme ich jetzt einfach mal an, dass du wissen willst, für welche Benutzer gilt, dass gesamt * anteil * 2 > Betrag ist. Ein SUM hat dann da überhaupt nichts zu suchen. (Beispiel: Betrag = 100.00)

    Code sql:
    1
    2
    3
    
    SELECT * 
    FROM nutzer 
    WHERE gesamt*anteil*2 >= 100.00;
     
    Versuche nie Probleme zu lösen, von deren Existenz du noch gar nichts weißt!

  6. #6
    Avatar von Quests Sohn
    Quests Sohn Quests Sohn ist offline Mitglied Bronze
    Registriert seit
    Apr 2005
    Beiträge
    43
    Genau das wars. Ich hätte nie gedacht, wie einfach es sein kann.
    Mir war nicht bewusst, dass man in der WHERE Klausel einfach Berechnungen durchführen darf.


    VIELEN DANK ALLEN ANTWORTERN!
     

Ähnliche Themen

  1. [Vb6] Überlauf bei Multiplikation
    Von nicok im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 02.10.08, 18:02
  2. Rekursive Multiplikation
    Von FiselM im Forum Java
    Antworten: 16
    Letzter Beitrag: 05.01.08, 20:19
  3. Antworten: 0
    Letzter Beitrag: 16.04.07, 18:36
  4. Ist die Multiplikation so richtig?
    Von siros im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.12.05, 12:18
  5. FlexGrid mit integrierter CheckBox
    Von Rosikopter im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 28.10.03, 09:57