0


opentask という名前のタスクを持つテーブルが 1 つあります:列 : id,title,description,expires,creator_id,creator_name, executer_id
, executer_name, priority_id, status_id executer_id が user_id の user_id と等しくなる opentask テーブルからのすべての列が存在するクエリと、creator_id が user_id と再び等しくなるクエリ。最初の等式が 2 番目の等式を除外するため、これは混乱を引き起こします。




したがって、「opentask.executer_id = user_user_id」のような実行者のユーザー名を含めるクエリを作成する必要があり、同時に作成者のユーザー名を(別の名前として?) 「where opentask.executer_id=user_user_id」のようなものだ

から、これを試してみます。もちろん、何かが欠けていることはわかっていますが、助けてもらえますか?

DISTINCT id、タイトル、説明、有効期限、creator_id、executer_id、oc_opentask.priority_id、oc_opentask.status_id、priority_name、status_name、user_id、ユーザー名を選択 (oc_opentask からユーザー名を選択、oc_user WHERE oc_opentask.creator_id=oc_user.user_id) AS username2 FROM oc_opentask 、oc_opentask_priority、oc_user、oc_opentask_status WHERE oc_opentask.priority_id=oc_opentask_priority.priority_id AND oc_opentask.executer_id=oc_user.user_id AND oc_opentask.status_id=oc_opentask_status.status_id ORDER BY oc_opentask.expires DESC

4

1 に答える 1

0

異なるエイリアスを使用しJOINてテーブルを 2 回再作成し、次のようにします。oc_usercreatorsexecuters

SELECT DISTINCT 
  t.*, 
  creators.user_name 'Creator name',
  executers.username 'Executor name', 
  tp.priority_name, 
  s.status_name
FROM oc_opentask t 
INNER JOIN oc_opentask_priority tp        ON t.priority_id = tp.priority_id
INNER JOIN oc_user              executers ON t.executer_id = executes.user_id
INNER JOIN oc_user              creators  ON t.creator_id  = creators.user_id
INNER JOIN oc_opentask_status   s         ON t.status_id   = s.status_id
ORDER BY t.expires DESC
于 2012-11-05T11:07:07.940 に答える