繁体   English   中英

连接来自两个mysql表的列

[英]Join columns from two mysql tables

我正在尝试找出以下内容。 首先,我想检查成员是否在11、43或1组中。

我有带有列的下表:

table members (member_id, name, group)
334 Ronald 43
table content (member_id, value)
334 Gold

我正在寻找一个查询,该查询显示名称FROM成员和值FROM内容,并与member_id连接,最终结果类似

罗纳德·金

如果用户不在我设置的组中,则不会显示他/她。

以下是我设法做的

$sql = 'SELECT * FROM members m INNER JOIN content p ON m.member_id = p.member_id  ';
$retval = mysql_query( $sql, $conn );    

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
echo $row['member_id']. " " .$row['value'];
echo "<br>";
}    

将输出334金币。

我只需要检查开头的组,然后在最终输出中将member_id替换为name。 有什么帮助吗?

如果将echo $row['member_id']更改为echo $row['name'] ,则在回显结果时,将获得成员的名称。

返回$row['group']将告诉您成员所在的组。

只需调整您的mysql查询即可:

$sql = 'SELECT m.name, p.value FROM members m JOIN content p ON m.member_id = p.member_id WHERE m.group = 1 OR m.group = 11 OR m.group = 43;

然后

echo $row['name']. " " .$row['value'];

另外,由于不建议使用mysql_query()因此您应该使用mysqli_query()PDO::query() 参考

您的SQL应该为每一行返回以下构造

(member_id, name, group, value)

筛选出不在所需组中的成员修改您的查询

$sql = 'SELECT * FROM members m INNER JOIN content p ON m.member_id = p.member_id  WHERE m.group IN (11,43,1) ';

边注:

考虑使用PDO或mysqli_ *而不是mysql_ *,因为不推荐使用mysql_ *并在PHP7中删除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM