我是SQL的初学者。我正在尝试编写以下语句,但用户在组中的位置(group_members
。user_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));
}}}
答案 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']