Hallo Community!
Ich habe eine Frage bezüglich meiner SQL Abfrage, die ich für ein Projekt in meiner Schule brauche. Ich habe 3 Tabellen: User-Tabelle, Post-Tabelle, Freunde-Tabelle. Es sollen nun für einen Nutzer alle Posts ausgegeben werden, die er 1. selber gepostet hat und 2. die posts von den Freunden. Meine bisherige Abfrage ist:
SQL
SELECT tbl_posts.*,poster.name FROM tbl_posts
INNER JOIN tbl_friends AS friend ON friend.user_id = '1'
INNER JOIN tbl_users AS poster ON tbl_posts.user_id = friend.friend_id OR tbl_posts.user_id = '1'
ORDER BY tbl_posts.created_at DESC
Nun bekomme ich aber für die Abfrage doppelte Datensätze, da er beide namen mit in die Ausgabe nimmt, obwohl die user_id des posts eine andere ist, als der poster.name sein sollte. Falls ihr die Tabellenstrukturen braucht, füge ich die gerne hier noch an
Mit freundlichen Grüßen
Adrian Rodriguez
Edit, die Strukturen:
SQL
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `tbl_friends`
--
CREATE TABLE `tbl_friends` (
`user_id` int(11) NOT NULL,
`friend_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `tbl_posts`
--
CREATE TABLE `tbl_posts` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`content` text NOT NULL,
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`likes` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `tbl_users`
--
CREATE TABLE `tbl_users` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Alles anzeigen