Php 执行连接操作的简单查询
我正在使用PHP为我的网页执行MySQL函数 我有一张桌子Php 执行连接操作的简单查询,php,mysql,Php,Mysql,我正在使用PHP为我的网页执行MySQL函数 我有一张桌子 table name -> users uname oname john alex john murray john joseph john ray 还有一张桌子 table name -> more_info fname lname more alex some name some info murray
table name -> users
uname oname
john alex
john murray
john joseph
john ray
还有一张桌子
table name -> more_info
fname lname more
alex some name some info
murray // //
joseph // //
ray // //
我想做的是运行一个查询
检索与uname
john匹配的所有oname
列值
如果uname=john,此语句将成功检索oname列值
SELECT oname FROM users WHERE uname = 'john '
现在,我想要一个类似这样的语句,基于以前检索到的oname列值
SELECT * FROM more_info WHERE fname=oname // previos ones
我猜是它的Join
或innerJoin
,但不知何故,我无法获得它的正确语法或任何其他简单查询
我的方法
我想先检索oname列值,然后根据返回的行数在for循环中为每个列运行查询,但这种方法占用了我的服务器。您可以通过简单的
内部联接将两个查询合并为一个查询。
SELECT * FROM more_info mi
INNER JOIN users u ON mi.fname = u.oname
WHERE u.uname = 'john'
如果more\u info
表中存在空值的可能性,则应使用LEFT JOIN
而不是internal JOIN
。否则就没有必要了。试试这个查询
SELECT * FROM `more_info` `i` INNER JOIN `users` `u` ON `i`.`fname`=`u`.`oname` WHERE `u`.`uname`="john"
有关详细信息,请参阅。我认为以下查询将对您有所帮助
SELECT * FROM `more_info` WHERE `fname` = (SELECT `oname` FROM `users` WHERE `uname` = "john")
我想他需要更多的数据_info@Sherin:然后用
选择*
他得到了它们。+1但是你犯了一个错误,它的i.fname=u.oname改变它!谢谢你的帮助哦,我的错误…无论如何,我很高兴能帮你+1谢谢,但是你能解释一下,当你不使用sherin jose在回答中使用的where子句时,它是如何工作的。哦,对不起。如果您想要获取特定用户的信息,那么必须添加where子句。我想这是为所有用户准备的。我的错误。我正在更新我的答案。谢谢
SELECT * FROM `more_info` WHERE `fname` = (SELECT `oname` FROM `users` WHERE `uname` = "john")