zwei Datenbank Tabellen abfragen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

mir würde letzte Eintrag reichen!

mit "last insert id Limit -1" (oder so ähnlich) hatte ich es schon einmal versucht.
Leider haue ich mir immer einen synthax Fehler rein.
Vor allem wahrscheinlich weil es an der falschen Stelle im Code ist.
:(
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Ahja.....

Code: Alles auswählen

SELECT
  *
FROM 
  gewichte
ORDER BY
  timestamp DESC
LIMIT 1
Was ist dagegen einzuwenden?
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

Ahja.....
ja klar, hau ruhig drauf. :(

Code: Alles auswählen

$sql = "SELECT u.username, u.gewicht_s, u.gewicht_z, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, u.user_avatar, u.user_avatar_type, u.user_allowavatar, g.gewicht, g.gewicht_k 
   FROM ". USERS_TABLE ." u, phpbb_gewicht g 
   WHERE u.user_id <> " . ANONYMOUS . " 
   AND u.user_id = g.userid 
   ORDER BY $order_by";
so sieht es ja bisher aus. Wie bekomme ich denn den "timestamp DESC" da rein?
Oder muss ich es noch wo anders unterbringen?
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

cyber3000 hat geschrieben:
Ahja.....
ja klar, hau ruhig drauf. :(

Code: Alles auswählen

$sql = "SELECT u.username, u.gewicht_s, u.gewicht_z, u.user_id, u.user_viewemail, u.user_posts, u.user_regdate, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, u.user_avatar, u.user_avatar_type, u.user_allowavatar, g.gewicht, g.gewicht_k 
   FROM ". USERS_TABLE ." u, phpbb_gewicht g 
   WHERE u.user_id <> " . ANONYMOUS . " 
   AND u.user_id = g.userid 
   ORDER BY $order_by";
so sieht es ja bisher aus. Wie bekomme ich denn den "timestamp DESC" da rein?
Oder muss ich es noch wo anders unterbringen?
Mal ganz langsam.....

Wir brauchen eine Zeitspalte z.B. timestamp wenn wir diese absteigend sortieren müsste wir in der ersten Zeile den aktuellen Datensatz haben.
Und wenn wir nur den ersten haben wollen müssen wir die Ergebnismenge mit Limit einschränken.......

Dein jetziges Statement liefert dir sämtliche User und Gewichte.....

In deiner Gewichte Table hast du schon mal eine Timestamp spalte nach dieser müsstest du eigentlich nur sortieren....

Die Frage ist wie sieht das SQL Statment mit $order_by aus bzw. nach was wird sortiert....
Du kannst hier problemlos , getrennt mehrere Felder angeben.....
Allerdings wird in $order_by vermutlich der Spaltename + ASC/DESC drinstehen.....

Gib einfach mal:

Code: Alles auswählen

echo $sql;
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

Hallo,
Ich frage mich allerdings was du im eigentlichen Sinne tun willst.....
Möchtest du eine weitere Sortiermöglichkeit in der Mitgliederliste nach z.B. letzter Eintrag.....Anscheind ja wie die Sortierung nach letztem Gewicht aussieht auf deiner Page
ja dann versuche ich es mal ganz langsam:

Wie du im Moment siehst bin ich ja in der Liste 3 x vertreten.
Und zwar sind das die drei letzten Daten die ich eingegeben habe.
Wer sich zweimal eingetragen hat ist auch nur zweimal vertreten.

Nun soll aber jeder Name nur 1x auftauchen, zugeordnet werden soll bei diesem aber immer der Letzte Eintrag des Gewichtes.
(Oder eben nach Kalenderwoche).
Mir würde aber der Letzte Eintrag schon reichen.


E-Mail, webseiten, Wohnort fliegt hinter noch raus.



das mit
timestamp DESC
LIMIT 1
hat mir allerdings nur den letzten User und einen Eintrag ausgeworfen.

DANKE, für deine Zeit!
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

Mit anderen Worten du willst nur nach dem Usernamen gruppieren und sein Maximalgewicht anzeigen, ist es das?

Code: Alles auswählen

$sql = "SELECT u.username, max(g.gewicht_s+g.gewicht_z) as Gewicht, u.user_id
   FROM ". USERS_TABLE ." u, phpbb_gewicht g 
   GROUP BY u.user_id
   WHERE u.user_id <> " . ANONYMOUS . " 
   AND u.user_id = g.userid 
   ORDER BY Gewicht DESC"
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

nicht ganz.
folgende Daten kommen aus der Tabelle php_users:

1. Name
2. Startgewicht
3. Zielgewicht
4. Größe

weitere Daten aus der php_gewicht:

1. Ist Gewicht
2. die nach Kommastelle vom Istgewicht
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag von Blutgerinsel »

cyber3000 hat geschrieben:nicht ganz.
folgende Daten kommen aus der Tabelle php_users:

1. Name
2. Startgewicht
3. Zielgewicht
4. Größe

weitere Daten aus der php_gewicht:

1. Ist Gewicht
2. die nach Kommastelle vom Istgewicht
Solange die Datensäte eindeutig sind wird GROUP BY funktionieren und nicht entsprechende Error um die Ohren hauen....

Ich denke das bekommst du jetzt alleine hin oder?
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

ich sage mal oder?

wirst bestimmt noch mal von mir hören. :D

thx
cyber3000
Mitglied
Beiträge: 33
Registriert: 24.06.2004 18:58
Kontaktdaten:

Beitrag von cyber3000 »

versprochen ist versprochen.
Da bin ich wieder. :cry:

Eigentlich hatte ich gedacht ich hätte es geschafft aber denkste. Mist!
Jetzt fummel ich schon wieder eine Ganze Zeit aber mir fällt nichts mehr dazu ein.
Also so schauts nun aus:

Code: Alles auswählen

$sql = "SELECT u.username, max(u.gewicht_s+u.gewicht_s_k/10) as gewicht_s, max(g.gewicht+g.gewicht_k/10-u.gewicht_z+u.gewicht_z_k/10) as verbleiben , max(u.gewicht_z+u.gewicht_z_k/10) as zielgewicht, u.groesse, max((u.gewicht_s+u.gewicht_s_k/10)-(g.gewicht+g.gewicht_k/10)) as abnahmegewicht , u.gewicht_z, u.gewicht_z_k, u.user_id, u.user_viewemail, u.user_regdate, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_msnm, u.user_avatar, u.user_avatar_type, u.user_allowavatar, max(g.gewicht+g.gewicht_k/10) as gewicht, max((g.gewicht+g.gewicht_k/10)/(u.groesse*u.groesse/10000)) as bmi, g.timestamp
   FROM ". USERS_TABLE ." u, phpbb_gewicht g 
   WHERE u.user_id <> " . ANONYMOUS . " 
   AND u.user_id = g.userid 
   GROUP BY user_id 
   ORDER BY  $order_by";

Alles lässt sich schön sortieren, wie angedacht.
Leider hat das Ganze einen riesen Schönheitsfehler.
Bei dem "Gewicht" wird nicht das letzte genommen, was der User eingetragen hat sondern meist das Erste.
Folglich stimmt auch die Ganze Berechnung nicht.

Ich habe es schon mit "order by gewicht desc" versucht aber auch dann funzt es nicht. :(

BITTE, wer schmeißt mir mal was zur Erleuchtung rüber?

hier seht ihr das Problem:
http://diaet.abnehmen-forum.com/memberlist1.php
Antworten

Zurück zu „Coding & Technik“