Ergebnis 1 bis 2 von 2

Thema: Logikfrage SQL

  1. #1
    Unregistriert
    Gast

    Standard Logikfrage SQL

    Hi

    ich habe eine Problem. Ich komme einfach nicht auf den gewünschten SQL Code. (arbeite mit MySql und PHP)

    Ich habe 2 Tabellen:
    User:
    id (int, 11, primary)
    name (varchar, 20)

    userdaten:
    id(int, 11, primary)
    userid (int, 11) (Zuordnung zu User->id)
    zahl (double, 5,3)
    status (int, 1) (1/0 oder true/false)

    Userdaten kann mehrere Einträge mit der selben userid haben.
    Nun möchte ich, dass alle User ausgegeben werden. Im Array sollen folgende Infos sein:
    User->id, User->name, Sum(userdaten->zahl). Eigenschaft: WHERE status = 1, sortiert nach der Summe

    Irgendwie bekomme ich das nicht auf die Reihe. Zuerst habe ich es mit User Left Join Userdaten gemacht. Dann habe ich jedoch das problem, dass wenn keine Userdaten vorhanden sind, ich auch keine User ausgabe bekomme.
    Dann dachte ich mir, okay mach Userdaten Left Join User und danach noch eine 2. Abfrage mit den User bei denen keine Zahl vorhanden ist. Hat auch geklappt, aber dann habe ich 2. Abfragen und das ist umständlich.
    Außerdem habe ich dann ein Problem wenn ich weitere Filter einbauen will. Mir wäre es lieber wenn ich nur eine Abfrage habe, jedoch bekomme ich es nicht hin
    Im Sum kann man ja keine Abfrage mache, ansonsten wäre es kein Problem. (also Sum(SELECT zahl FROM userdaten WHERE status = 1 AND userid = user.id))

    Ich habe mir auch schon überlegt erst alle User in array zu speichern, dann die Summen auszulesen und dann alles mit PHP zu sortieren. Aber bei vielen Daten wird das sehr serverlastig.

    Hoffentlich kann mir hier einer helfen =)
    Ich wäre der Person / den Personen sehr dankbar.

    Gruß
    Mike
    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 !!!!!

  2. #2
    König(in) Avatar von crAzywuLf
    Registriert seit
    03.02.2009
    Beiträge
    1.175
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Logikfrage SQL

    Code:
    SELECT `user`.`id`, `user`.`name`, IFNULL(SUM(`userdaten`.`zahl`), 0) as `anzahl` FROM `user` LEFT JOIN `userdaten` ON `user`.`id` = `userdaten`.`userid` WHERE `userdaten`.`status` = 1 OR `userdaten`.`status` is NULL GROUP BY `user`.`id`
    garnicht so einfach^^ Das Problem ist die Bedingung userdaten.status, weil wenn es keine passenden Datensatz in der anderen Tabelle gibt, gibt MySQL halt NULL zurück und NULL ist nicht "1", deshalb werden die auch nicht zurückgegeben... Probiers mal so
    Geändert von crAzywuLf (29.11.2011 um 15:17 Uhr)
    Gruß crAzywuLf

Stichworte

Berechtigungen

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