У меня есть три MYSQL ТАБЛИЦЫ (InnoDB):Лучший способ получить максимальное значение при соединении MySQL таблицы
NAMES
id nid version fname lname birth
RELATIONS
id rid version idname idperson roleid
ROLES
id role
Я хочу, чтобы выбрать последний вариант каждого ОТНОШЕНИЙ присоединился к последней версии связанных с ними ИМЕНА для конкретного idperson (и имя роли)
конечно, idperson будет иметь 0, 1 или более отношений и будет один или несколько вариантов отношений и ИМЕНА
я написал что-то вроде:
SELECT A.id,A.nid,MAX(A.version),A.idname,A.idperson,A.roleid,B.id,B.role
FROM RELATIONS A
INNER JOIN
ROLES
ON A.roleid = B.id
INNER JOIN
(SELECT id,nid,MAX(version),fname,lname,birth FROM NAMES) C
ON A.idname = C.id
WHERE A.idperson = xx
Это не работает, может быть, потому, что MAX()
, кажется, возвращает только одну строку ... Как получить максимальное значение более чем в одной строке в этом контексте присоединения?
PS: Как вы генерируете такой хороший набор данных?
т.е.:
id home datetime player resource
---|-----|------------|--------|---------
1 | 10 | 04/03/2009 | john | 399
2 | 11 | 04/03/2009 | juliet | 244
5 | 12 | 04/03/2009 | borat | 555
8 | 13 | 01/01/2009 | borat | 700