在 mysql 中加入来自相同 table 的两个字段
Join two fields from same table in mysql
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
usuarios.img_src as avatar_from,
usuarios.alias as name_from,
usuarios.img_src as avatar_to,
usuarios.alias as name_to
FROM pms
LEFT JOIN usuarios ON usuarios.id = pms.id_from
LEFT JOIN usuarios ON usuarios.id = pms.id_to
每行有两个 usuario(别名或 img_src)引用的问题:
我得到这个错误:
The following errors were reported:
Not unique table/alias: 'usuarios'
或者这个
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
usuarios.img_src as avatar_from,
usuarios.alias as name_from,
usuarios.img_src as avatar_to,
usuarios.alias as name_to
FROM pms
LEFT JOIN usuarios ON usuarios.id = pms.id_from OR usuarios.id = pms.id_to
有效,但我为每个 _to 和 _from 获得了相同的名称和图像
那么,到这里怎么走?
是的,加入同一个 table 将需要 table 的唯一别名,命名为
select
p.id,
p.id_from,
p.id_to,
p.fecha,
p.leida,
u1.img_src as avatar_from,
u1.alias as name_from,
u2.img_src as avatar_to,
u2.alias as name_to
from pms p
LEFT JOIN usuarios u1 ON u1.id = p.id_from
LEFT JOIN usuarios u2 ON u2.id = p.id_to
如果您两次使用相同的 table,则需要不同的别名
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
u_from.img_src as avatar_from,
u_from.alias as name_from,
u_to.img_src as avatar_to,
u_to.alias as name_to
FROM pms
LEFT JOIN usuarios u_from ON u_from.id = pms.id_from
LEFT JOIN usuarios u_to ON u_to.id = pms.id_to
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
usuarios.img_src as avatar_from,
usuarios.alias as name_from,
usuarios.img_src as avatar_to,
usuarios.alias as name_to
FROM pms
LEFT JOIN usuarios ON usuarios.id = pms.id_from
LEFT JOIN usuarios ON usuarios.id = pms.id_to
每行有两个 usuario(别名或 img_src)引用的问题:
我得到这个错误:
The following errors were reported:
Not unique table/alias: 'usuarios'
或者这个
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
usuarios.img_src as avatar_from,
usuarios.alias as name_from,
usuarios.img_src as avatar_to,
usuarios.alias as name_to
FROM pms
LEFT JOIN usuarios ON usuarios.id = pms.id_from OR usuarios.id = pms.id_to
有效,但我为每个 _to 和 _from 获得了相同的名称和图像
那么,到这里怎么走?
是的,加入同一个 table 将需要 table 的唯一别名,命名为
select
p.id,
p.id_from,
p.id_to,
p.fecha,
p.leida,
u1.img_src as avatar_from,
u1.alias as name_from,
u2.img_src as avatar_to,
u2.alias as name_to
from pms p
LEFT JOIN usuarios u1 ON u1.id = p.id_from
LEFT JOIN usuarios u2 ON u2.id = p.id_to
如果您两次使用相同的 table,则需要不同的别名
SELECT pms.id,
pms.id_from,
pms.id_to,
pms.fecha,
pms.leida,
u_from.img_src as avatar_from,
u_from.alias as name_from,
u_to.img_src as avatar_to,
u_to.alias as name_to
FROM pms
LEFT JOIN usuarios u_from ON u_from.id = pms.id_from
LEFT JOIN usuarios u_to ON u_to.id = pms.id_to