Abfrageproblem
Julian
- datenbank
0 Julian0 Heino0 Ludger Keitlinghaus0 Viennamade0 Julian
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
ups vergessen zu sagen um welche Datenbank es sich handelt. Also es ist eine MySql-Datenbank.
Julian
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.
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
Hm ich würd mal versuchen:
Setz in den headdor $(%!)yZawP ?/&
Dann müsste es funzen
gL
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
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
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
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