Klipp Ohei
Klipp Ohei

Reputation: 385

How to use joins in a mysql query across three tables

at first my tables:

+----------+      +--------------+     
| users    |      | users_groups |     +--------------+
+----------+      +--------------+     | groups       |
| user_id  |----->| user_id      |     +--------------+
| username |      | group_id     |<----| group_id     |
| realname |      +--------------+     | group_name   |
| password |                           | group_desc   |
+----------+                           +--------------+

From an other PHP script I have a variable $group_id and now I want all usernames and user_ids which are in this group ($group_id).

I tried this but it didn't work:

SELECT u.username, u.user_id
FROM users u
WHERE users_groups.group_id = $group_id

How should the query look like? Something with joins, isn't it?

My PHP-Code:

$group_id = $_POST["group_id"];

    $query_user = mysqli_query($db, 
                                    "SELECT 
                                    User.user_id, User.username
                                    FROM users User 
                                    INNER JOIN user_groups UserGroup
                                        ON User.user_id = UserGroup.user_id
                                    WHERE UserGroup.group_id = $group_id
                                    ");
    while ($row_user = mysqli_fetch_object($query_user)) {
        echo'
        '.$row_user->username.'<br>
        ';
    }

Upvotes: 0

Views: 49

Answers (2)

kamal pal
kamal pal

Reputation: 4207

SELECT 
    User.user_id, User.username
FROM users User 
INNER JOIN users_groups UserGroup
    ON User.user_id = UserGroup.user_id
WHERE UserGroup.group_id = $group_id

Hopefully this would work fine!

EDIT:

$group_id = mysqli_real_escape_string($db, $_POST["group_id"]);

    $query_user = mysqli_query($db, 
                                    "SELECT 
                                    User.user_id, User.username
                                    FROM users User 
                                    INNER JOIN users_groups UserGroup
                                        ON User.user_id = UserGroup.user_id
                                    WHERE UserGroup.group_id = '$group_id'
                                    ");
    while ($row_user = mysqli_fetch_object($query_user)) {
        echo $row_user->username.'<br>';
    }

Upvotes: 1

Martin Heraleck&#253;
Martin Heraleck&#253;

Reputation: 5779

This will work:

SELECT u.username, u.user_id
FROM users u
WHERE users_groups.group_id = $group_id && users_groups.user_id = u.user_id

Upvotes: 0

Related Questions