In Mariadb-Datenbank möchte ich eine Abfrage machen, um zwei Tabellen zu verbinden: joke
und jokevote
, um alle Witze zu erhalten, die von einem bestimmten Benutzer aufgewertet werden.Wie mache ich einen Join zwischen 2 Tabellen mit 2 Werten?
Hier sind die Tabellen:
Witz
+-------------+------------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------+------+-----+-------------------+----------------+
| id | int(6) unsigned | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | None | |
| content | mediumtext | NO | | NULL | |
| user_id | int(10) unsigned | YES | | 0 | |
| username | varchar(32) | NO | | Unknown | |
...
jokevote:
+---------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| joke_id | int(11) | NO | | NULL | |
| user_id | int(11) | NO | | NULL | |
| vote | tinyint(4) | NO | | NULL | |
+---------+------------+------+-----+---------+----------------+
Einige Werte in joke
Tabelle (in Bezug auf Benutzer 6):
Einer der Abfrage, die ich versucht ist:
SELECT * FROM joke LEFT JOIN jokevote
ON joke.user_id=6 AND joke.id=jokevote.joke_id
AND jokevote.vote=1;
Die Abfrage nur 2 Witze zurückgeben sollte, aber es gibt alle die Witze. Ich habe auch versucht, andere Abfragen wie folgt:
SELECT * FROM joke LEFT JOIN jokevote
ON joke.user_id=6 AND joke.id=jokevote.joke_id AND
jokevote.vote=1 AND joke.user_id=jokevote.user_id AND ;
(wieder, die alle die Witze zurückgibt)
Also ich bin ahnungslos links und fragen, was in diesem Fall die richtige Abfrage ist?
zeigen auch eine Datenprobe und der expcted Ergebnis – scaisEdge
LEFT JOIN gibt alle Datensätze aus der linken Seite der Abfrage. So wird es in deinem Fall immer alle Witzdaten zurückgeben. Vielleicht suchen Sie nach INNER JOIN? –
Verwenden Sie "Join" anstelle von "Linke Verbindung" –