Php 执行连接操作的简单查询

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

我正在使用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     //           //
 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")