Seite 1 von 3

zwei Datenbank Tabellen abfragen

Verfasst: 14.11.2004 12:11
von cyber3000
HI,

eigentlich wollte ich meine Mitgliederliste um einige Angaben erweiter, die in einer anderen Tabelle gespeichert werden.
Leider bin ich wohl zu dumm dafür :-(.
Der Original Code sieht wie folgt aus:

Code: Alles auswählen

$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar 
	FROM " . USERS_TABLE . "
	WHERE user_id <> " . ANONYMOUS . "
	ORDER BY $order_by";
diesen habe ich nun abgeändert, damit ich aus der anderen Tabelle "phpbb_gewicht", meine Gewichtsdaten abfragen kann.
Das wäre einmal "gewicht" u. "gewicht_k"
Nun sieht der code wie folgt aus:

Code: Alles auswählen

$sql = "SELECT phpbb_users.username, phpbb_users.gewicht_s, phpbb_users.gewicht_z, phpbb_users.user_id, phpbb_users.user_viewemail, phpbb_users.user_posts, phpbb_users.user_regdate, phpbb_users.user_from, phpbb_users.user_website, phpbb_users.user_email, phpbb_users.user_icq, phpbb_users.user_aim, phpbb_users.user_yim, phpbb_users.user_msnm, phpbb_users.user_avatar, phpbb_users.user_avatar_type, phpbb_users.user_allowavatar, phpbb_gewicht.gewicht, phpbb_gewicht.gewicht_k

	FROM phpbb_users,phpbb_gewicht 
	WHERE phpbb_users.user_id <> " . ANONYMOUS . "
			ORDER BY $order_by ";

So nun erhalte ich zwar den Eintrag aus der Datenbank, aber das war es auch schon.
Mir fehlen nun alle Mitglieder, dort steht jetzt nämlich nur noch mein Name und ebenfalls die Posts sind nur meine.
Auch sollte der letzte Eintrag angezeigt werden und nicht der Erste (immo).
Die Tabelle sieht so aus:

Beispiel für einen Eintrag:

Code: Alles auswählen

`phpbb_gewicht` (`userid`, `gewicht`, `gewicht_k`, `timestamp`) VALUES (2, 80, 3, 1100229413);

Wie bekomme ich es jetzt hin das 80,3 kg angezeigt werden. Natürlich für jedes Mitglied seiner UID entsprechend?

So sieht es nun aus:

http://diaet.abnehmen-forum.com/memberlist1.php

BITTE! Helft mir!

ciao Thorsten

Verfasst: 14.11.2004 13:11
von Leuchte
Versuchs mal so

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";

Verfasst: 14.11.2004 19:47
von cyber3000
@Leuchte

erst einmal ein großes DANKE!, bin schon ein Stückchen weiter. :wink:


Allerdings fehlt mir jetzt noch die richtige Zuordung.

1.
Im Moment werden alle Einträge abgefragt, es soll aber immer nur der letzte Eintrag angezeigt werden, der in der DB gespeichert wurde.

2.
Bei dem g.gewicht, g.gewicht_k handelt es sich um Zahlen die zusammen gehören.

g.gewicht= vor dem Komma (z.B. 80)
g.gewicht_k= nach dem Komma (7)
zusammen sollte dann 80,7 herauskommen.
Wie bekomme ich die zusammen?

thx Thorsten

Verfasst: 14.11.2004 20:07
von Blutgerinsel
Frage:
a) Warum sind die Werte nicht verrechnet miteinander
b) Warum schaust du nicht im MySQL Manual nach den Funktionen?

, gibt es nicht! Stattdessen .

Verfasst: 14.11.2004 21:06
von cyber3000
Warum sind die Werte nicht verrechnet miteinander
das ist doch meine Frage, wie ich die zusammenbekomme.
Warum schaust du nicht im MySQL Manual nach den Funktionen?
mache seit Tagen nichts anderes und teste wie wild.
Meist stelle ich auch erst Fragen, wenns gar nicht mehr geht bzw. ich ein Wink mit dem Zaunpfahl brauche.
:(

Verfasst: 14.11.2004 22:56
von Blutgerinsel
ehm warum wird das mit dem Insert nicht in genau ein Attribut gespeichert?

Welchen Typ haben die Spalten in der DB?

Verfasst: 15.11.2004 10:51
von cyber3000
Hi Blutgerinsel,

hier mal der Type:

userid bigint(20)
gewicht int(3)
gewicht_k tinyint(1)
timestamp bigint(20)


warum das Ganze so gelöst wurde kann ich dir nicht sagen, weil ich den Progger nicht mehr erreiche. :(
Kann mir nur vorstellen, dass es evtl. mit einer Diagrammerzeugung über jpgraph zusammenhängt oder mit dem nachträglichen hinzufügen der Kommastelle.

thx Thorsten

Verfasst: 15.11.2004 12:00
von Blutgerinsel
Naja man könnte auch gleich eine Fließkommaspalte nehmen was weiss ich mit einer Genaugigkeit von 5 Stellen und diese dann wie man will mit round in php oder gleiche via MySQL runden...

jdgraph und warum sollte ich dort derartiges brauchen?
Ich brauch ja nur das Verhältnis zum Gesamten

Verfasst: 15.11.2004 19:07
von cyber3000
Hi Blutgerinsel,

also das mit dem Komma habe ich glaub ich gelöst.
Ist zwar wahrscheinlich unkonventionell aber das Ergebnis zählt.
Habe meinen auszugebenen Wert wie folgt definiert :
'Gewicht_Ziel' => $gewicht+$gewicht_k/10
bitte "Programmier" erschlagt mich nicht dafür. :D



Jetzt fehlt eigentlich nur noch das spezielle auslesen der letzten eingegebenen Daten.
Das bekomme ich absolut nicht hin.
Wo bzw. wie muss ich dafür im Code ansetzen?

thx Thorsten

Verfasst: 15.11.2004 19:18
von Blutgerinsel
cyber3000 hat geschrieben:Hi Blutgerinsel,

also das mit dem Komma habe ich glaub ich gelöst.
Ist zwar wahrscheinlich unkonventionell aber das Ergebnis zählt.
Habe meinen auszugebenen Wert wie folgt definiert :

'Gewicht_Ziel' => $gewicht+$gewicht_k/10

bitte "Programmier" erschlagt mich nicht dafür. :D
Naja zu Workarounds die unnötig sind sag ich jetzt nichts dazu....
Jetzt fehlt eigentlich nur noch das spezielle auslesen der letzten eingegebenen Daten.
Das bekomme ich absolut nicht hin.
Wo bzw. wie muss ich dafür im Code ansetzen?

thx Thorsten
Definiere zuletzt eingegebene Daten....
[ ]Die Letzten 10
[ ]Die Letzten 10 vor 5 Monaten
[ ]Die Letzten 10 innerhalb einer Stunde
[ ]Anderes

Ersteres:
-> Sortieren nachdem Timestamp Attribut und mit Limit die Ergebnismenge eingrenzen
Letztere erfordern tiefergehende MySQL KEnntnisse um mit INTERVAL, DATE_SUB/DATE_ADD zu arbeiten. Welche ich jetzt nicht näher erläutere.... :wink: