使用来自多个表的数据

时间:2012-06-04 15:13:44

标签: php mysql database syntax

这是我的问题:我有3个表,每个表都有重叠的信息(特别是用户名)。除了用户名行在每个表中都没有命名相同的东西。由于用户名是特定于用户的,因此根据用户名获取有关用户的所有其他信息是有意义的。这就是我所拥有的。 (第一个函数返回查询,第二个函数返回数组中的信息(或者应该返回)。

function get_user_by_id($id) {
    global $connection;
    $query = "SELECT * FROM ownerOrganization, owner, queue_acl";
    $query .=" WHERE owner.ownerId=ownerOrganization.ownerId";
    $query .=" AND owner.ownerId=queue_acl.user_id";
    $query .= " AND owner.ownerId ='{$id}'";
    $result_set = mysql_query($query);
    confirm_query($result_set);
    if ($user = mysql_fetch_array($result_set)) {
        return $user;
    } else {
        return NULL;
    }
}

function get_user_id() {
    if (isset($_GET['ownerId'])) {
        return get_user_by_id($_GET['ownerId']); 
    } 
}

但是,当我在另一个页面上执行类似$sel_user = get_user_id();的操作时,它实际上并没有提取任何选定的用户信息...我认为这是发生的,因为我使用多个表的语法是不正确。无论如何,任何输入都将非常感激。

2 个答案:

答案 0 :(得分:0)

要使用JOINS,请在示例中使用此代码:

$query = "SELECT * FROM (ownerOrganization INNER JOIN owner ON owner.ownerId=ownerOrganization.ownerId) INNER JOIN queue_acl ON owner.ownerId=queue_acl.user_id";
$query .=" WHERE owner.ownerId ='{$id}'";

此致

答案 1 :(得分:0)

我正在输入或多或少的@MTranchant所写的内容。我建议重命名列以便于查询创作并避免混淆。例如,您的ownerOrganization.ownerid可以命名为oo_ownerid,表中的其他列可以遵循该命名约定。

另外,您是否使用您知道存在的硬编码$ id对数据库运行查询?

最后,在发送到下一页的查询字符串中,ownerId参数是否显示为“& ownerId =”?