如何从子表中获取信息(通过父表),该子表使用引用父项的外键。
例如:
表: user_list (父级)
-----------------------------
first_name | Last Name | ID |
-----------------------------
john | Appleseed | 4 |
| | |
表: user_info :(孩子)
----------------------------------------------
email | password | userlist_ID |
----------------------------------------------
jappleseed@me.com | ******* | 4 |
让我们说John Appleseed的信息存储在一个数组中:
$johnsInfo;
如何从user_info表中检索John的电子邮件?
我正在尝试这个atm:
db->query("SELECT * FROM user_info WHERE userlist_ID = :ID", $johnsInfo);
不确定这是否是正确的做事方式。
答案 0 :(得分:2)
如果这是一个真实的例子,你应该把这两个表放到一个表中。通常,如果表格具有1:1的对应关系,则应将它们放在一起(但是,有些特殊情况则不应该)。
无论如何,你想要做的事情如下:
SELECT ul.*, ui.* FROM user_list ul
LEFT JOIN user_info ui
ON ui.userlist_ID=ul.ID
WHERE ul.ID = :ID
有不同种类的连接。查看MySQL文档(http://dev.mysql.com/doc/refman/5.0/en/join.html)或搜索“数据库连接”之类的内容,找出哪一个最终会为您工作。
答案 1 :(得分:1)
这是您需要的SQL
SELECT user_list.ID
,user_list.first_name
,user_list.last_name
,user_info.email
,user_info.password
FROM user_list
INNER JOIN user_info
ON user_list.ID = user_info.userlist_ID
WHERE user.ID = :ID