2

MYSQL クエリの結果を含む配列を取得しようとしています。テーブル ヒットリスト user_id と mark_id に 2 つの ID が格納されています。テーブル users に参加して、そこにある ID と将来的には他の変数に一致するユーザー名を取得する必要があります。

私はこれを奇妙な方法で動作させており、これに似たより効率的な単純な方法でこれを動作させることを望んでいました

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

これは私が持っているコードです...今のところ、後で問題が発生する可能性があるようです。

<?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++;
}
4

1 に答える 1

3

テーブルへの参加方法が間違っています。必要な正確なレコードを取得できます。usersテーブルに2回参加して、それぞれのユーザー名を取得する必要があります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

アクセスできます

$result['User_name'] 
$result['mark_name'] 
于 2012-10-13T02:31:25.043 に答える