Tprice88
Tprice88

Reputation: 661

Mysql Join two Id's to get there Usernames

Im trying to get in Array that contains the results from a MYSQL query. I have 2 ids stored in the table hitlist user_id and mark_id they need to join in the table users to retrieve there usernames that match there id's and in the future other variables.

i have this working in a weird way and was hopeing to get this working in a more efficent simple way similar to this

$Hitlists = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id AND hitlist.mark_id = users.id")->fetchAll();

This is the code i have that is working...for now it looks like it might give me problems later on.

<?php
$index = 0;
$Hitlists = array();
$st = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.user_id = users.id")->fetchAll();
$sth = $db->query("SELECT * FROM hitlist JOIN users ON hitlist.mark_id = users.id")->fetchAll();

foreach($st as $id) 
{
    $Hitlists[] = $id;
}

foreach($sth as $id) 
{
        $Hitlists[$index]['markedby'] = $id['username'];
        $Hitlists[$index]['mark_id'] = $id['mark_id'];
        $index++;
}

Upvotes: 2

Views: 1317

Answers (1)

John Woo
John Woo

Reputation: 263703

The way you are joining the table is wrong. You can get the exact records you want, you need to join users table twice to get the username of each ID

SELECT  a.*, 
        b.username User_name,
        c.username mark_name      
FROM    hitlist a
        INNER JOIN users b
            ON  a.user_id = b.id 
        INNER JOIN users c
            ON  a.mark_id = c.id

and you can access

$result['User_name'] 
$result['mark_name'] 

Upvotes: 3

Related Questions