2017-05-04 11 views
0
SELECT pb.* 
    , expire_date IS NULL permanent 
    , p.username banned_by 
    FROM player_bans pb 
    JOIN players p 
    ON pb.by_userid = p.id 
WHERE (ip = '%e' OR userid = '%d') 
    AND (expire_date > NOW() OR expire_date IS NULL) 
    AND liftedby_userid IS NULL 
LIMIT 1 

ご覧のとおり、クエリは「プレーヤー」テーブルに参加し、「ユーザー名」行を取得します。私はまた、playeridテーブルのuserid(このuseridフィールドはplayer_bansテーブルに存在する)の名前をテーブルに参加させることで取得したいのですが、どのように同じクエリでこれを行うことができますか?MySQLを使用して異なる挿入IDから行を取得

基本的に、私は同じことをby_useridでやっていますが、今回は同じクエリで "userid"フィールドにします。

+0

ORDER BYのないLIMITはかなり意味がないことに注意してください。詳細については、http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simpleを参照してください。 -sql-query – Strawberry

答えて

0
SELECT pb.* 
    , (expire_date IS NULL) AS permanent 
    , p1.username AS banned_by 
    , p2.username AS player 
FROM player_bans pb 
JOIN players p1 ON pb.by_userid = p1.id 
JOIN players p2 ON pb.userid = p2.id 
WHERE (ip = '127.0.0.1' OR userid = 1) 
    AND (expire_date > NOW() OR expire_date IS NULL) 
    AND (liftedby_userid IS NULL) 

これは私がそれを解決した方法です。

関連する問題