Hallo
Also ich habe versucht, was hier immer wieder angepriesen wird:
Selbermachen *lach*
Ich habe mir einen JOIN zusammengebastelt und würd mich freuen, wenn mal jemand drüber schauen und mir sagen könnte, ob er so korrekt ist, bzw. wie man ihn vielleicht noch optimieren können.
Zum "Problem":
Ich habe die folgenden 3 Tabellen:
Tabelle 'mitglieder'
(hier sind Profildaten der Mitglieder gespeichert)
Felder:
UserId, UserName, UserStatus, UserAlter
Tabelle 'usertexte'
(hier werden selbstgeschriebene Texte der user gespeichert)
Felder:
TextId, Text, TextUser, TextStatus
Tabelle 'text_kommentare'
(hier stehen Kommentare zu den einzelnen Texten drin)
kommentar_id, kommentar_von, kommentar, kommentar_zu_textid
Mit dem untenstehenden JOIN versuche ich nun folgendes:
Ich möchte, das mir der Reihe nach (jeweils ein) zufälliger Text aus der Tabelle 'usertexte' ausgelesen wird.
Die Voraussetzungen an diesen zufälligen Text:
Nur Texte von Mitgliedern, deren UserStatus = 0 ist
Nur Texte, deren TextStatus = 0 ist
Nur Texte von Mitgliedern, die mindestens 25 Jahre als (Feld UserAlter)
Nur Texte, zu denen ich als derjenige, dem der beitrag angezeigt wird, noch keinen Kommentar geschrieben habe (dies ist der fall, wenn in der tabelle 'text_kommentare' kein Eintrag mit meiner UserId vorhanden ist.
Mein JOIN sieht nun so aus:
Das ganze scheint zu funktionieren, allerdings ist die Geschwindigkeit nicht die Beste
Mich würde jetzt interessieren, ob der JOIN so wirklich richtig ist und ob sich da vielleicht etwas dran optimieren lässt.
Ist mein erster wirklich komplexer Join
Also ich habe versucht, was hier immer wieder angepriesen wird:
Selbermachen *lach*
Ich habe mir einen JOIN zusammengebastelt und würd mich freuen, wenn mal jemand drüber schauen und mir sagen könnte, ob er so korrekt ist, bzw. wie man ihn vielleicht noch optimieren können.
Zum "Problem":
Ich habe die folgenden 3 Tabellen:
Tabelle 'mitglieder'
(hier sind Profildaten der Mitglieder gespeichert)
Felder:
UserId, UserName, UserStatus, UserAlter
Tabelle 'usertexte'
(hier werden selbstgeschriebene Texte der user gespeichert)
Felder:
TextId, Text, TextUser, TextStatus
Tabelle 'text_kommentare'
(hier stehen Kommentare zu den einzelnen Texten drin)
kommentar_id, kommentar_von, kommentar, kommentar_zu_textid
Mit dem untenstehenden JOIN versuche ich nun folgendes:
Ich möchte, das mir der Reihe nach (jeweils ein) zufälliger Text aus der Tabelle 'usertexte' ausgelesen wird.
Die Voraussetzungen an diesen zufälligen Text:
Nur Texte von Mitgliedern, deren UserStatus = 0 ist
Nur Texte, deren TextStatus = 0 ist
Nur Texte von Mitgliedern, die mindestens 25 Jahre als (Feld UserAlter)
Nur Texte, zu denen ich als derjenige, dem der beitrag angezeigt wird, noch keinen Kommentar geschrieben habe (dies ist der fall, wenn in der tabelle 'text_kommentare' kein Eintrag mit meiner UserId vorhanden ist.
Mein JOIN sieht nun so aus:
PHP-Code:
$result = @mysql_query("SELECT
a.TextId,
a.Text,
b.UserId,
b.UserName,
b.UserAlter,
c.kommentar_id
FROM usertexte a
LEFT JOIN mitglieder b
on
b.UserId = a.kommentar_von
and
b.UserStatus = 0
and
b.UserAlter > '25'
LEFT JOIN text_kommentare c
on
a.TextId = c.kommentar_zu_textid
and
c.kommentar_von = '".$MeineUserId."'
WHERE
kommentar_id IS NULL
and
b.UserName IS NOT NULL
and
a.TextStatus = '0'
ORDER BY rand()
LIMIT 1");
Mich würde jetzt interessieren, ob der JOIN so wirklich richtig ist und ob sich da vielleicht etwas dran optimieren lässt.
Ist mein erster wirklich komplexer Join
Kommentar