| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: komplexerer select im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige heyho ich hab folgende daten, ne user tabelle mit userid,namen und ne tablle mit einträgen nach der zeit sortiert ...
![]() |
| | #1 (permalink) |
| Member of Honour ![]() | Anzeige heyho ich hab folgende daten, ne user tabelle mit userid,namen und ne tablle mit einträgen nach der zeit sortiert sind, wann man ne abfrage gemacht hat. wenn ich jetzt die letzte aktivität haben will, brauch ich die maximale zeit (sprich die letzt aktivität) zusammen mit dem benutzer namen. folgendes konstrukt hab ich, was aber nicht funktioniert, wo liegt der fehler? Code: mysql> select id,user,(select max(time) from resets where user_id = u.id) as last from user as u where last < 1228559037 order by last desc; ERROR 1054 (42S22): Unknown column 'last' in 'where clause'
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Auswertungsreihenfolge: Für Wen Geht Susi Heute Ohne Slip. => From, Where, Select1, Groupby,having, Order By, Select2 d.h es wird der Where-Teil ausgewertet und erst danach der Select-Teil (in dem die Zuweisung stattfindet).
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Member of Honour ![]() | eine geniale eselsbrücke! wie müsste das dann aber aussehen, damit der select greift? da müsst ich ja irgendwie das last schon vorher bekommen und es damit in zwei seperaten querys abarbeiten seh ich das richtig? edit: oder kann man da noch sowas einbauen wie max(resets.time), allerdings bekomm ich ja dein keine where klausel mit unter
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #4 (permalink) |
| Moderator ![]() | Wie wär's stattdessen mit folgendem Konstrukt: Code: SELECT u.id, u.user, r.time FROM user u LEFT JOIN resets r ON u.id=r.user_id WHERE r.time < 1228559037 ORDER BY r.time DESC LIMIT 1 |
| | |
| | #5 (permalink) |
| Member of Honour ![]() | an einen inner join hatte ich auch gedacht, nur dann hab ich grundsätzlich ziemlich viele datensätze zurückbekommen, wenn ich mehrere time einträge größer meiner abfragezeit hatte. ich möcht ja sozusagen von allen benutzern jeweils die letzte aktivität haben! (ich hoffe ich hab deinen query richtig interpretiert, kann den grad nicht ausprobieren)
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #6 (permalink) |
| Moderator ![]() | Ich hab dich so verstanden, dass du eigentlich nur die letzte Aktivität (vor einem bestimmten Zeistempel) haben willst, nicht die von allen Nutzern. Ist aber auch kein Problem und sollte in etwa so gehen: Code: SELECT u.id, u.user, max(r.time) AS last FROM user u LEFT JOIN resets r ON u.id=r.user_id WHERE last < 1228559037 GROUP BY u.id |
| | |
| | #7 (permalink) |
| Member of Honour ![]() | das produziert allerdings wieder den bekannten fehler: Code: ERROR 1054 (42S22): Unknown column 'last' in 'where clause' ich glaub ich habs: doch nich! doch! und zwar brauch ich doch gar nicht die abfrage mit dem maximum, weil das wird ja erst nach der where klausel bestimmt, susi lässt grüßen. ich kann ja, da ich ja ohnehin den größten wert haben will, einfach nach resets.time filtern, indem ich da einfach nen where resets.time < time() - 86400 reinpack! Code: SELECT
user.id,user.user,max(resets.time)
FROM
resets
INNER JOIN
user
ON
resets.user_id = user.id
WHERE
resets.time > 1228899994 - 86400
GROUP BY
user.id; jackpot!
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #8 (permalink) | |
| Zitat:
Für wen stript Gabi heute ohne slip | ||
| | |
| | #9 (permalink) |
| Member of Honour ![]() | OT: wieso gibts für sowas eigentlich keine jugendfreie eselsbrücken ;D
__________________ » Flattr mich! - Wenn dir mein Beitrag geholfen hat! « <| 2 AMD Opterons 2384@ 8x3,2ghz | Tyan S2915 | 10GB | 2x 8800GT | 8400GS | Dell 3008WFP + 2x2007FP |> |
| | |
| | #10 (permalink) |
| Fresse wen schlägt Gürkan heute ohne Schlagring? Das ist... jugendlicher | |
| | |
| | #11 (permalink) | ||
| Registriert seit: 11.06.05 ![]() Likes: 0 | Zitat:
From, Where, Select1, Groupby, Having, Orderby, Select2 => FWSGHOS S und G vertauscht Fuer wen stript Gabi heute ohne Slip? stimmt ![]() (zumindest wenn die Reihenfolge richtig ist. Hab schon laenger kein SQL mehr gehabt [RoR rockt | ||
| | |
| | #12 (permalink) | |||
| Zitat:
Guckstu da is vertauscht: FWGSHOS = Für wen geht Susi heute ohne Slip FWSGHOS = From, Where, Select1, Groupby, Having, Orderby, Select2 Guckstu da is richtig: FWSGHOS = Für wen stript Gabi heute ohne Slip FWSGHOS = From, Where, Select1, Groupby, Having, Orderby, Select2 | ||||
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Select und Funktion - Frage | VivaLosTioz | (Web-) Design und webbasierte Sprachen | 4 | 25.03.09 09:46 |
| input per | Catarrer | (Web-) Design und webbasierte Sprachen | 5 | 11.08.08 00:02 |
| [MySQL] SELECT SUM() in UPDATE | Friedrich | Code Kitchen | 1 | 18.12.07 16:03 |
| Funktionsweise SELECT | Dawen | Code Kitchen | 2 | 31.05.07 15:28 |
| JS: | mido | (Web-) Design und webbasierte Sprachen | 4 | 02.08.02 17:02 |