Also ich glaube, ich brauche einen Inner Join für diese Abfrage, aber bin mir nicht 100% sicher.SQL Inner Join mit 3 Tabellen
Zu allererst sehen meine Datenbank-Diagramm:
Click here for database diagram
Was ich versuche zu erreichen:
- Ich versuche, alle Nachrichten zu erhalten (so user_username , text, posted_at FROM-Nachrichten), wobei der user_username mit dem folged_username übereinstimmt und wo der folged_username einen follower_username hat, der =?
- Also im Wesentlichen alle gefolgt von?, Ich möchte alle ihre Nachrichten erhalten.
Wo? = Ein inputed Benutzername
Was ich bisher versucht habe
ich eine Reihe von SQL-Anweisungen versucht haben und haben bisher nicht gelungen, erfolgreich zu bekommen sein. Dies sind einige, die ich versucht habe.
$sql = "SELECT user_username, text, posted_at FROM Messages, Users, User_Follows WHERE user_username = (SELECT username FROM Users WHERE username = (SELECT followed_username FROM User_Follows WHERE follower_username = ?)) ORDER BY posted_at DESC;";
$sql = "SELECT user_username, text, posted_at FROM Messages, User_Follows WHERE follower_username = ? AND followed_username = user_username;";
$sql = "SELECT user_username, text, posted_at FROM Messages JOIN User_Follows ON user_username = followed_username WHERE follower_username = followed_username;";
Ich denke, jetzt brauche ich eine innere Verknüpfung zu erreichen, was ich will, aber ich bin nicht sicher, ob dies richtig ist, oder wie man das macht.
Vielen Dank im Voraus.
Was Sie gerade haben, ist Cross-Joins, was Ihr Problem ist. Unter keinen Umständen sollten Sie jemals implizite Joins verwenden. Sie sind eine sehr schlechte Technik und verursachen solche Probleme. Um eine Korrektur anzubieten, müssen wir die Tabellenstrukturen sehen. – HLGEM
Haben Sie auf meinen Link @HLGEM – jsmith