Ich versuche, links die zweite Tabelle useri_ban
basierend auf den Benutzer-IDs zu verbinden, mit der zusätzlichen Bedingung: useri_ban.start_ban = max_start
.Zugriff auf die übergeordnete Spalte aus einer Unterabfrage innerhalb eines Joins
Um mich max_start
zu berechnen, ich habe die folgende Unterabfrage auszuführen:
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id)
Um darüber hinaus max_start
zu jeder Zeile hinzuzufügen, ich innere Notwendigkeit, diese Unterabfrage des Ergebnisses in das Hauptergebnis beitreten . Es scheint jedoch, dass die Unterabfrage nach dem Anwenden dieses Joins nicht mehr auf useri.id
zugreifen kann.
Was mache ich falsch?
SELECT
useri.id as id,
useri.email as email,
useri_ban.warning_type_id as warning_type_id,
useri_ban.type as type,
useri.created_at AS created_at
FROM `useri`
inner join
(SELECT MAX(ub.start_ban) AS max_start, user_id FROM useri_ban ub WHERE ub.user_id = useri.id) `temp`
on `useri`.`id` = `temp`.`user_id`
left join `useri_ban` on `useri_ban`.`user_id` = `useri`.`id` and `useri_ban`.`start_ban` = `max_start`
Schritt 1: Stellen Sie sicher, dass Daten in der Unterabfrage, die Sie benötigen, beibehalten werden. Schritt 2: Geben Sie der Untertabelle einen Aliasnamen. Schritt 3: Referenzalias-Tabelle in der äußeren Auswahl – Fallenreaper