0

私は2つのテーブルを持っています

"雇用者":

  emp_id  empl_name     wage
    1     john          20/h
    2     mike          20/h
    3     sam           30/h

"位置":

  pos_id  emp_id  pos_name   related_pos
    1      1      cleaner       0
    2      3      driver        3
    3      2      bodyguard     0

雇用者名、役職名、賃金、関連職名、関連ポジションの賃金、関連ポジションの雇用者を含む表示テーブルが必要です

今、私はクエリを持っています:

SELECT pos_name, empl_name, wage 
   FROM positions
      LEFT JOIN employers ON employers.emp_id = positions.emp_id

次のリクエストは機能しませんが、必要なものがわかります:

SELECT pos_name, empl_name, wage, (SELECT empl_name
                                      FROM positions 
                                         LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2,
                                  (SELECT pos_name 
                                      FROM positions
                                         WHERE pos_id = related_pos) as pos2
   FROM positions
      LEFT JOIN employers ON employers.emp_id = positions.emp_id
4

2 に答える 2

0

このコードでうまくいくと思います。

SELECT 
p.pos_name, 
p.empl_name, 
p.wage, 
(SELECT pos_name FROM positions WHERE pos_id = p.related_pos) as pos2
FROM positions as p
INNER JOIN employers as e ON e.emp_id = p.emp_id

次のコードを削除しました。

 (SELECT empl_name FROM positions 
  LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2,

2つのエラーがあると思うからです。まずempl_name、テーブルに列がありません。次に、このサブクエリは、行の結果にさらに多くを与えます。これは、最初のサブクエリにも当てはまります。emp_id

于 2012-01-18T19:27:30.960 に答える
0

これを必要以上に複雑にしたようです。私が正しく理解していれば、あなたはテーブルをリンクしようとしています。これを3つの部分に分けます。

SELECTには、雇用主名、役職名、賃金、関連する役職名、Rel Pos Wage、RelPosEmployerを含める必要があります。

雇用主、ポジションから

WHERE position.emp_id = Employers.emp_id

これにより、ポジションとペアになる雇用主からのすべてのアイテムのリストが表示されます。

これがあなたの意図したものではない場合は申し訳ありません。もしそうなら、私にうなずいてください。

于 2012-01-18T19:27:36.193 に答える