2011-09-23 83 views
4

我有一個問題要了解在此查詢會發生什麼:mysql select中的縮寫,它們是什麼意思?

$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。在字段名之前,這些不是表名,但我懷疑某種連接的縮寫,但我從來沒有在這種方式之前看到它們。

我可以重寫我自己的查詢,以完成工作,但我想知道這意味着什麼,這樣我就可以解決這個問題本身(郵件發送兩次)

在此先感謝您的幫助!

回答

10

看看 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

r代表的lp_relations表和m表示lp_mailings_relations表。別名幫助您通過分隔字段來進行連接。例如,如果您有一個用戶表具有在產品表中找到的相同字段名稱,則別名可幫助將其分開(非模糊)。

1

它們是表名的「別名」。請注意你在查詢中如何說「from lp_relations r...」?那末尾的「r」現在被別名爲lp_relations。所以你可以用「r」來引用那個查詢中的lp_relations。這是讓事情變得更加可讀的速記。

相關問題