Oli: Daten in Rangliste - Ich bin's wieder ;)

Hi, war jetzt länger nicht da und habe es heute nochmal versucht, zu verstehen:

Habe es jetzt so gemacht:

[quote]"SELECT Nr, sum(Punkte) FROM ((SELECT (COUNT(*) * 3) as Punkte, a as Nr FROM haupttabelle GROUP BY Nr) UNION (SELECT (COUNT(*) * 10) as Punkte, b as Nr FROM haupttabelle GROUP BY Nr) AS subselect GROUP BY Nr ORDER BY Nr"[/quote]

Und es kommt jedes mal bei
[quote]while($daten = mysql_fetch_object($resultset))
(
echo $daten->Nr; echo "---"; echo $daten->Punkte; echo "<br>";
)[/quote]

die Fehlermeldung "supplied argument is not a valid MySQL result resource"... Was habe ich noch falsch gemacht? Die beiden Abfragen aus der Union funktionieren einzeln einwandfrei... Was ist noch falsch?

Danke
Oli

  1. Hello,

    die Fehlermeldung "supplied argument is not a valid MySQL result resource"... Was habe ich noch falsch gemacht? Die beiden Abfragen aus der Union funktionieren einzeln einwandfrei... Was ist noch falsch?

    ...und was bringt die Gesamtabfrage z.B. per PHPMyAdmin auf die Datenbank losgelassen? Wahrscheinlich einen Fehler, den du in deiner Anwendung unterdrückst, sonst wäre das Ergebnis wohl eine Resource...

    MfG
    Rouven

    --
    -------------------
    When the only tool you've got is a hammer, all problems start to look like nails.
  2. hi,

    die Fehlermeldung "supplied argument is not a valid MySQL result resource"... Was habe ich noch falsch gemacht?

    Dich micht mal ansatzweise um Fehlerbehandlung gekümmert.

    Die beiden Abfragen aus der Union funktionieren einzeln einwandfrei... Was ist noch falsch?

    Nutze mysql_error(), um freundlich bei der Datenbank nachzufragen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3.   
    SELECT  
     Nr,  
     sum(Punkte)  
    FROM  
     (  
      (  
      SELECT  
       (COUNT(*) * 3) as Punkte,  
       a as Nr  
      FROM  
       haupttabelle  
      GROUP BY  
       Nr  
      )  
     UNION  
      (  
      SELECT  
       (COUNT(*) * 10) as Punkte,  
        b as Nr  
      FROM  
       haupttabelle  
      GROUP BY  
       Nr  
      ) AS subselect  
    GROUP BY  
     Nr  
    ORDER BY  
     Nr  
    
    

    1.) Da fehlt doch eine schliessende Klammer.
    2.) Immer nur den SQL-Code posten
    3.) missfällt mir UNION ( SELECT
    4.) alles schön in Deinem Query-Tool selbst testen
    5.) (haben wir nicht so viel Zeit und müssen weg, aber wir bleiben am Ball...)

    1. SELECT
      Nr,
      sum(Punkte)
      FROM
      (
        (
        SELECT
         (COUNT() * 3) as Punkte,
         a as Nr
        FROM
         haupttabelle
        GROUP BY
         Nr
        )
      UNION
        (
        SELECT
         (COUNT(
      ) * 10) as Punkte,
          b as Nr
        FROM
         haupttabelle
        GROUP BY
         Nr
        ) AS subselect
      GROUP BY
      Nr
      ORDER BY
      Nr

        
      Da wir diesen schwierigen Patienten (gemeint ist die Anforderung) schon eine ganze Weile pflegen (relativ erfolglos ;), noch ein paar Anmerkungen aus unserem Gedächtnis zur Anforderungslage:  
        
      Du gehst - so meine Erinnerung - auf ein und dieselbe Tabelle um an Hand zweier Regeln Punkte zu vergeben, die addiert werden sollen und letztlich absteigend sortiert eine Rangliste ergeben sollen.  
        
      Deine hier vorgestellte Abfrage ist da schon ganz OK, Du bildest die Vereinigungsmenge aus den beiden Listen mit den "Gummipunkten" und fragst diese ab. Wichtig natürlich die korrekte Syntax. Diese bitte mit einem Dir hoffentlich z.V. stehenden Abfragetool testen und \_erst\_dann\_ bspw. in PHP implementieren.  
        
      Wenn wir uns nicht täuschen bist Du aber ganz nah an der Lösung.
      
  4. yo,

    die Fehlermeldung "supplied argument is not a valid MySQL result resource"... Was habe ich noch falsch gemacht? Die beiden Abfragen aus der Union funktionieren einzeln einwandfrei... Was ist noch falsch?

    ich tippe auf das AS subselect, lass da das AS mal weg und schreibe nur subselect.

    Ilja

    1. die Fehlermeldung "supplied argument is not a valid MySQL result resource"... Was habe ich noch falsch gemacht? Die beiden Abfragen aus der Union funktionieren einzeln einwandfrei... Was ist noch falsch?

      ich tippe auf das AS subselect, lass da das AS mal weg und schreibe nur subselect.

      Der Syntaxfehler hat u.a. mit der Klammerung zu tun und dem "SELECT ( UNION". Der Name für die temporäre Vereinigungsmenge müsste OK sein.