0

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

GererLocationAppart(IdAppartL, MatriculeEmploye)
Employe(MatriculeEmploye, PrenomEmploye, NomEmploye, NumeroTelephoneEmploye)

「PrenomEmploye」、「NomEmploye」、および列「Id AppartL」を含むテーブルを取得したいと思います。この最後の列には、すべての「MatriculeEmploye」が参照している行数が含まれている必要があります。私は私が混合を行う必要があることを知っています

Select Distinct PrenomEmploye, NomEmploye, IdAppartL
From Employe E1, GererLocationAppart G1
Where E1.MatriculeEmploye=G1.MatriculeEmploye;

SELECT MatriculeEmploye, COUNT(IdAppartL)
FROM GererLocationAppart
GROUP BY MatriculeEmploye;

しかし、方法がわかりません..試してみます:

Select Distinct PrenomEmploye, NomEmploye
From Employe
Where MatriculeEmploye in
(SELECT MatriculeEmploye, COUNT(IdAppartL)
FROM GererLocationAppart
GROUP BY MatriculeEmploye);

しかし、私は得る:

ERROR 1241 (21000): Operand should contain 1 column(s)
4

2 に答える 2

1
SELECT
 E1.PrenomEmploye
,E1.NomEmploye
,E1.IdAppartL
,COUNT(G1.IdAppartL) as CountMatriculeEmploye
From Employe E1
JOIN GererLocationAppart G1 ON E1.MatriculeEmploye=G1.MatriculeEmploye
GROUP BY E1.MatriculeEmploye;
于 2013-04-17T12:59:54.397 に答える
1

後のサブクエリは、 IN1 列のみを返す必要があります。MatriculeEmploye, COUNT(IdAppartL)あなたはそう2列を返しています。クエリは次のようになります。

Select e.PrenomEmploye, e.NomEmploye, COUNT(g.IdAppartL)
From Employe e 
  INNER JOIN GererLocationAppart g ON g.MatriculeEmploye=e.MatriculeEmploye
GROUP BY 1,2;

このクエリは、同じ (Prenom, Nom) カップルを持つ従業員をマージすることに注意してください。そのため、e.MatriculeEmploye を SELECT および GROUP BY 句に追加することもできます ( GROUP BY 1,2,3select を に変更する場合SELECT e.MatriculeEmploye, e.Prenom, ...)。

于 2013-04-17T13:01:23.273 に答える