2017-02-21 26 views
0

Hy guys, a о 20 вопросе, но у меня все еще есть проблема Потому что все выглядит иначе, или я просто не вижу, какое решение работает над моей проблемой.MYSQL Последняя запись в GROUP BY от m до n JOIN

Я хочу написать всем своим клиентам, они каждый год переезжают в другую квартиру. Я сделал пользователей таблицы, адрес таблицы и мтон, чтобы присоединиться к ним. Но когда у пользователя есть адрес 2, я всегда получаю первый адрес с группой по или оба адреса, когда присоединяются к ним без группы.

может кто-то показать мне ответ, я держал пари, что это уже решения я отсутствую

ярлыка моих таблиц

CREATE DATABASE DL; 

CREATE TABLE DL.users (
    uidx int PRIMARY KEY auto_increment, 
    email varchar(255) 
); 
INSERT INTO DL.users VALUES (NULL,'myemail'),(NULL,'heremail'); 
CREATE TABLE DL.address (
    aidx int PRIMARY KEY auto_increment, 
    address varchar(255) 
); 
INSERT INTO DL.address VALUES (NULL,'myadress'),(NULL,'heraddress'); 
CREATE TABLE DL.ntom (
    nidx int PRIMARY KEY auto_increment, 
    fk_uidx int , 
    fk_aidx int , 
    movein date 
); 
INSERT INTO DL.ntom VALUES (NULL,1,1,'2016-01-01'),(NULL,2,2,'2016-01-01'),(NULL,1,2,'2017-01-01'); 

теперь она дает мне

SELECT email,address,movein FROM DL.users 
JOIN DL.ntom ON uidx = fk_uidx 
JOIN DL.address ON aidx = fk_aidx 

myemail myadress  2016-01-01 
heremail heraddress 2016-01-01 
myemail heraddress 2017-01-01 

когда я группа по и порядок по времени myemail все еще живет на myadress, а не на heraddress

SELECT email,address,movein FROM DL.users 
JOIN DL.ntom ON uidx = fk_uidx 
JOIN DL.address ON aidx = fk_aidx 
GROUP BY DL.users.email ORDER BY DL.ntom.movein desc 

myemail myadress  2016-01-01 
heremail heraddress 2016-01-01 

пожалуйста, помогите мне, он хочу двигаться к ней, он любит ее так чепчик

ожидаемый результат:

myemail heraddress 2017-01-01 
heremail heraddress 2016-01-01 

< :) 3

Спасибо.

+0

почему вы используете группу по? вы не используете какую-либо функцию агрегации ... и, пожалуйста, покажите нам ожидаемый результат. – scaisEdge

+0

Я пытаюсь понять, что именно вы пытаетесь спросить. Можете уточнить больше. – r0xette

+0

Выполняет ли это 'SELECT адрес электронной почты, адрес, перемещение из DL.users JOIN DL.ntom ON uidx = fk_uidx JOIN DL.address ON helpx = fk_aidx WHERE fk_uidx! = Fk_aidx ORDER BY DL.ntom.movein desc;' дает ожидаемый результат? На самом деле трудно понять, какой результат вы хотите получить) –

ответ

1

попробовать так:

SELECT email,address,movein FROM DL.users u 
JOIN (SELECT fk_uidx,max(movein) as maxmovein from DL.ntom group by fk_uidx) as t ON u.uidx = t.fk_uidx 
JOIN DL.ntom t2 on t2.fk_uidx=t.fk_uidx and t2.movein=t.maxmovein 
JOIN DL.address a ON a.aidx = fk_aidx 
ORDER BY t2.movein desc 
+1

отлично, спасибо. теперь я пытаюсь понять простой шаг подзапроса :) – RakonDark

+0

не забудьте принять ответ :) –

+1

о, извините, я думаю, что пропустил этот шаг – RakonDark