我正在学习PHP和MySQL,以获得服务器端脚本和个人兴趣/开发。第一个'程序',超越'hello world'似乎是在写自己的博客。
这还有点超出我的想法,所以我想我会从一个contacts-database类型开始。到目前为止一切都那么好,但是(并且总是有!)我正在尝试以联系人姓名格式化为mailto:link的形式格式化演示文稿。
$query = mysql_query("
SELECT CONCAT(fname,', ',sname) AS name, email.address AS email
FROM contacts, emails
WHERE contacts.contactID=email.contactID");
while ($row = mysql_fetch_array($query)) {
echo "<li><a href=\"mailto" . $row['email'] . "\"> . $row['name'] . "</a></li>";
}
这很好,直到我敢于在Db中输入没有电子邮件地址的联系人,此时显然缺少一个等于contacts.contactID的email.contactID。
我意识到我应该能够解决这个问题,但是......我想不出怎么样(对于失眠!@。@)。任何建议将不胜感激。
答案 0 :(得分:2)
你想要一个左(即左外)联接。
select concat(c.fname, ' ', c.sname) as name, e.address as email
from contacts c
left join emails e
on (c.contactID = e.contactID)
答案 1 :(得分:1)
使用外部联接加入联系人和电子邮件表:
SELECT
CONCAT(fname,', ',sname) AS name, email.address AS email
FROM
contacts c
left outer join emails e on (c.contactID = e.contactID)
这将返回所有联系人及其电子邮件地址(如果有),其他明智的地址将为空。