我有一个问题需要了解此查询中会发生什么:
$db->select("select r.id, m.mailing_id, r.email,
m.done from lp_relations r, lp_mailings_relations m
where m.relation_id=r.id and m.mailing_id=? order by r.name",
$rs[$i]["id"]
关于字母r
。和m
。在fieldnamesthese之前,这些不是表名,但我怀疑是某些联接的缩写,但我从来没有见过它们。
我可以重写我自己的查询以完成工作,但我想知道这意味着什么,所以我可以解决问题本身(邮件发送两次)
提前感谢您的帮助!
答案 0 :(得分:11)
看看
FROM lp_relations r, lp_mailings_relations m
。
在真正的表名后,您会找到一个新名称,用于使SELECT部分更短且易于阅读
因此,表lp_relations变为r,表lp_mailings_relations变为m!
你可以写:
SELECT r.id, r.email, m.mailing_id, m.done
FROM lp_relations r INNER JOIN lp_mailings_relations m
ON m.relation_id=r.id
WHERE m.mailing_id=?
ORDER BY r.name
答案 1 :(得分:2)
它们是表名的“别名”。请注意您在查询中如何说“from lp_relations r...
”?现在结尾的“r”别名为lp_relations。所以你可以用“r。”来引用该查询中的lp_relations。这是让事情变得更具可读性的简写。
答案 2 :(得分:1)
r代表lp_relations表,m代表lp_mailings_relations表。别名可以通过分离字段来帮助您进行连接。例如,如果您有一个在产品表中找到相同字段名称的用户表,则别名有助于将其分开(非歧义)。