Julian: Abfrageproblem

Hallo,

also folgendes Problem:

Ich habe 2 Tabellen

USER                         AUFGABEN

|id| name  | aufgabeid |    |id | rang | aufgabe   |
|--|-------|-----------|    |---|------|-----------|
|2 | heinz | 3         |    |2  | 1    | webmaster |
|3 | paul  | 2         |    |3  | 2    | newspost. |

Ich möchte jetzt eine Abfrage, die mir die User in der Reihnfolge ausgibt, wie in der AUFGABEN-Tabelle der "rang" vergeben ist.

Also als Beispiel:

ausgabe: 3, paul, 2
         2, heinz, 3

Hoffe das ist verständlich und freue mich über jede Idee.

Julian

  1. ups vergessen zu sagen um welche Datenbank es sich handelt. Also es ist eine MySql-Datenbank.

    Julian

    1. Hi Julian,

      ups vergessen zu sagen um welche Datenbank es sich handelt. Also es ist eine MySql-Datenbank.

      Und warum kommt nicht direkt alles in eine Tabelle, die dann eben 5-spaltig wäre?

      MfG, Dennis.

      --
      Mein SelfCode: ie:{ fl:{ br:^ va:) ls:< fo:) rl:( n4:& ss:) de:> js:( ch:{ sh:( mo:} zu:|
      Zufällige Hinweise:
      ------------------------
      - Bitte schickt mir die Antwort als E-Mail an xy@xy.de
      Wie bitte? Noe, gibbet net!
      1. Und warum kommt nicht direkt alles in eine Tabelle, die dann eben 5-spaltig wäre?

        weil man die Aufgaben über ein Admininterface verändern kann mit deiner Lösung dann aber auch noch die usertabellen verändert werden müssen.

        Also als Beispiel:

        Es gibt 4 Newsposter, wenn man jetzt Newsposter in Newsschreiber umbennen will, muss das nur in der AUFGABEN-Tabelle geändert werden.

        Gibt noch andere Gründe warum ich das gerne so hätte, aber denke die brauch ich nicht weiter aufführe.

        (aber danke für die Antwort :))

        Julian

  2. Hm ich würd mal versuchen:

    Setz in den headdor  $(%!)yZawP ?/&

    Dann müsste es funzen

    gL

  3. Hi,

    und die Loesung ist:

    USER                         AUFGABEN

    |id| name  | aufgabeid |    |id | rang | aufgabe   |
    |--|-------|-----------|    |---|------|-----------|
    |2 | heinz | 3         |    |2  | 1    | webmaster |
    |3 | paul  | 2         |    |3  | 2    | newspost. |

    SELECT
     User.id,
     User.name,
     User.aufgabeid
    JOIN
     AUFGABEN on (AUFAGBEN.id = USER.aufgabeid)
    ORDER BY
     AUFGABEN.rang ASC

    Und lass Dir mal bessere Datenfeldnamen einfallen.

    Gruss,
    Ludger

    --
    "Wer nicht kaempft hat schon gewonnen."
  4. Hallo!

    USER                         AUFGABEN

    |id| name  | aufgabeid |    |id | rang | aufgabe   |
    |--|-------|-----------|    |---|------|-----------|
    |2 | heinz | 3         |    |2  | 1    | webmaster |
    |3 | paul  | 2         |    |3  | 2    | newspost. |

    Ich möchte jetzt eine Abfrage, die mir die User in der Reihnfolge ausgibt, wie in der AUFGABEN-Tabelle der "rang" vergeben ist.

    Ich habe im Moment kein mysql drauf, aber so müßte es gehen:
    SELECT u.name FROM USER AS u INNER JOIN a.AUFGABEN AS a ON u.id = a.id ORDER BY a.rang
    Vorausgesetzt, daß die id in AUFGABEN den user repräsentiert und, daß es pro Datensatz in USER einen in AUFGABEN gibt. Ist dem so? Andernfalls melde Dich.
    Vielleicht muß man anstelle von ORDER BY ORDERBY schreiben.

    Beste Grüße
    Viennamade

    1. Vorausgesetzt, daß die id in AUFGABEN den user repräsentiert und, daß es pro Datensatz in USER einen in AUFGABEN gibt. Ist dem so? Andernfalls melde Dich.

      Dem ist nicht so. Es kann 20 User geben, aber nur 2 Aufgaben. In der Usertabelle steht dann die ID für die Aufgabe.

      An Ludger:

      $member = mysql_query("SELECT
       ".$table_user.".id,
       ".$table_user.".art,
       ".$table_user.".aufgabe,
       ".$table_user.".squad,
       ".$table_user.".status,
       ".$table_user.".nickname,
       ".$table_user.".land
      JOIN
       ".$table_user_aufgabe." on (".$table_user_aufgabe.".id = ".$table_user.".aufgabeid)
      ORDER BY
       ".$table_user_aufgabe.".rang ASC;")OR die(mysql_error());

      wäre die Abfrage dann so? Oder hab ich das nicht verstanden. Wüßte sonst nicht wo die Tabellennamen hinsollen. Oder ganz normal mit FROM und wenn ja wo?

      Danke für die Hilfe

      Gruß Julian

      1. Hallo,

        Vorausgesetzt, daß die id in AUFGABEN den user repräsentiert und, daß es pro Datensatz in USER einen in AUFGABEN gibt. Ist dem so? Andernfalls melde Dich.

        Dem ist nicht so. Es kann 20 User geben, aber nur 2 Aufgaben. In der Usertabelle steht dann die ID für die Aufgabe.

        Dann brauchst Du eben einen »left join« der alle Datensätze  der Tabelle "user" nimmt, und fehlende Entsprechungen aus "aufgaben" mit leeren Feldner ausfüllt.

        Beste Grüße
        Viennamade