如何关联来自两个单独表的数据

时间:2014-07-17 18:55:36

标签: mysql sql

我是SQL的初学者。我正在尝试编写以下语句,但用户在组中的位置(group_membersuser_id = $ _SESSION [' user_id'])。

SELECT `group_name`, `group_description` FROM `groups`

如何编写这种与两个不同表中的值相关的查询?对不起,如果我没有解释清楚。

编辑:当我使用Matthew Haugen提供的查询时,我似乎遇到以下困难:在数组中只返回一组结果。

这是我执行查询的函数的代码:

function group_summary(){
$sql = secure_mysqli("SELECT `group_name`,`group_description` FROM `groups` WHERE `group_id` IN (SELECT `group_id` FROM `group_members` WHERE `user_id` = ?)", array($_SESSION['user_id']), "i");
$groups = $sql;
return $groups;
}

这是secure_mysqli:

function secure_mysqli($query, $values, $datatypes) {
    global $link;
    $stmt = mysqli_prepare($link, $query);
    if($stmt !== false){
    if(is_array($values)){ foreach ($values as &$value) $ref_values[] = &$value;
    call_user_func_array("mysqli_stmt_bind_param", array_merge(array($stmt, $datatypes), $ref_values));
    mysqli_stmt_execute($stmt);
    return @mysqli_fetch_assoc(mysqli_stmt_get_result($stmt));
}}}

2 个答案:

答案 0 :(得分:3)

听起来你想要这个

SELECT * FROM Groups
WHERE Groups.Id IN (SELECT GroupId FROM Group_Members WHERE User_Id = @userid)

或者这个

SELECT * FROM Groups
INNER JOIN Group_Members ON Groups.Id = Group_Members.GroupId
WHERE Group_Members = @userid

答案 1 :(得分:2)

您必须执行所谓的JOIN,具体取决于您想要的类型,请参阅here

所以你可以做类似下面的事情

SELECT A.GROUP_NAME
, B.GROUP_DESCRIPTION

FROM TABLE1 A
JOIN TABLE2 B
ON A.UNIQUE_KEY = B.UNIQUE_KEY

WHERE GROUP_MEMBERS.USER_ID = $_SESSION['USER_ID']