2012-10-10 3 views
5

に結合構文を私はアクセスを使用しています、と私は2つのテーブルがあります。アクセス

ポイント:

id,x,y 
1 32432432 143423232 
2 32432443 143423300 

ライン:今すぐ

id startPoint endPoint 
1 1   2 

、私はラインを照会するとき、私はしたいが返されるテーブルには、startPointのx、yとendPointの両方が含まれます。

私が参加しようとしている:そして、私だけにstartPointが含まれている次のような結果を得ることができます

select line.*,point.x as x1,point.y as y1 from line as line join point as point on line.startPoint=point.id where line.id=1; 

を。エンドポイントをretriveする方法次に

id startPoint endPoint x1 y1 
1 1   2  ...... 

私はこの(×2 Y2は、エンドポイントの座標である)のような結果を望んでいる間:

id startPoint endPoint x1 y1 x2 y2 
1 1   2  ...... 

私は2つのjoinを試してみましたが、それは動作しません。

select line.*,point1.x as x1,point1.y as y1,point2.x as x2,point.y as y2 from line as line left join point1 as point on line.startPoint=point1.id left join point as point2 on line.endPoint=point2.id where line.id=1; 
+2

私はあなたに答えがありませんが、私はBraileキーボードからコメントを提供します。 MS Accessのjoin構文は、私の目をスプーンで掘り起こしました。 – Dave

+0

私も、私たちはそれを使用する必要があります – hguser

答えて

7

アクセスには複数の結合に関する奇妙な構文規則があります。そのようにかっこに入れなければなりません。それぞれの追加が参加

select line.*, point1.x as x1,point1.y as y1, 
    point2.x as x2, point.y as y2 
from (line as line 
left join point as point1 
on line.startPoint = point1.id) 
left join point as point2 
on line.endPoint = point2.id 
where line.id = 1; 

は、最後から2番目の参加後の最初のテーブルの前に別の左の括弧と右括弧が必要です。

+0

、ありがとう.BTW、私はいくつかのSQL構文の記事をお勧めできますか? – hguser

+1

@hguser:[MSDN](http://msdn.microsoft.com/en-us/library/office/bb259125%28v=office.12%29.aspx) –