1

船の従業員とその職務経験を保存する MySQL データベースを取得しました。従業員を格納する 1 つのテーブル、出荷部門での以前のジョブ ( Type of Job 、 Years ) を格納する 1 つのテーブル、および他の以前のジョブ ( Type of Hob 、 Years ) を格納する別のテーブルを取得しました。これらはすべて、従業員の ID を使用して接続されます。従業員をフェッチするときに、彼の出荷と一般的な経験の合計を取得したいのですが、選択クエリは一般的な経験に対して間違った合計を返します。これは複数の結合が原因であり、テーブルが適切に結合されていないためであることはわかっていますが、これを修正する方法はわかりません。手伝っていただけませんか?

PS 単一のクエリでこれを実行したいと思います。

私が使用するクエリの例

SELECT id , name , SUM( s_exp.years ) , SUM ( g_exp.years ) 
FROM employees
LEFT JOIN s_exp ON employees.id = s_exp.id ,
LEFT JOIN g_exp ON employees.id = g_exp.id
GROUP BY employees.id
4

2 に答える 2

3

多分このようなもの:

SELECT id , name , 
(
    SELECT
        SUM(s_exp.years)
    FROM
        s_exp
    WHERE
        employees.id = s_exp.id
) AS s_total_years,
(
    SELECT
        SUM(g_exp.years)
    FROM
        g_exp
    WHERE
        employees.id = g_exp.id
) AS g_total_years,
FROM employees
于 2012-04-27T10:02:39.770 に答える
0
Select id, sum(g_exp.years) GE, sum(s_exp.years) SE 
From s_exp Natural Join g_exp 
Where id = (Select id From employee Where name = ?)
group by id
于 2012-04-27T10:23:26.527 に答える