1

次のフィールドを含む情報テーブルがあります。

id, staffMember, lineManager, description

staffMemberフィールドとlineManagerフィールドは、次の列を持つusersテーブル内の行のIDに対応する整数値を返します。

id, firstname, surname

次のクエリを使用して、情報テーブルの情報を返し、firstnameとsurnameのCONCATをstaffMember値に置き換えることができます。

SELECT information.id, 
    CONCAT( users.firstname,  ' ', users.surname ) AS staffMember, 
    information.lineManager, 
    LEFT(information.description,200) As description 
FROM information 
LEFT JOIN users 
    ON ( information.staffMember = users.id ) 
LIMIT 0 , 30"

しかし、私がやりたいのは、同じクエリ(json文字列として渡す)でもlineManagerのstaffMemberの値に取り組んでいるプロセスを繰り返すことです-しかし、私は2つを持つことができないことを知っていますLEFTは同じテーブルに結合しますが、異なるフィールドを同一視します。

どんな助けでもありがたいことに受けられるでしょう。

4

2 に答える 2

3

あなたはこれが欲しいようです:

SELECT i.id, 
    CONCAT(u1.firstname,  ' ', u1.surname) AS staffMember, 
    CONCAT(u2.firstname,  ' ', u2.surname  AS lineManager, 
    LEFT(i.description,200) As description 
FROM information i
LEFT JOIN users u1
    ON i.staffMember = u1.id 
LEFT JOIN users u2
    on i.lineManager = u2.id
LIMIT 0 , 30

テーブルで を 2 回実行するだけLEFT JOINです。users一度は に参加しstaffMember、もう 1 つは に参加しlineManagerます。テーブルに別のテーブル エイリアスを指定することで、テーブルと値を区別できます。

より明確にしたい場合:

SELECT i.id, 
    CONCAT(staff.firstname,  ' ', staff.surname) AS staffMember, 
    CONCAT(manager.firstname,  ' ', manager.surname  AS lineManager, 
    LEFT(i.description,200) As description 
FROM information i
LEFT JOIN users staff
    ON i.staffMember = staff.id 
LEFT JOIN users manager
    on i.lineManager = manager.id
LIMIT 0 , 30
于 2012-11-12T20:18:25.463 に答える
0

このようなもの:

SELECT information.id FROM information 
LEFT JOIN users u ON u.id = information.staffMember
LEFT JOIN users ul ON ul.id = information.lineManager

表の後の文字/単語は完全にあなたが作ったものです。これらは、その場で作成するテーブル名のエイリアスです。

于 2012-11-12T20:19:15.367 に答える