0

私はこのクエリを持っています:

SELECT hit.timestamp,hit.id,config.Name,hit.meter_id,levels.LevelName, pos.sm_pos , hit.hit_value 
FROM pos,hit,controllers,levels,config 
WHERE hit.id=config.id
AND hit.meter_id=levels.id 
AND pos.id=hit.id
AND pos.controller_id=controllers.id;

これから内部結合クエリを作成する方法は? エイリアスか何かで?私は探していましたが、複数のテーブルクエリのものが見つかりません。

4

2 に答える 2

4

テーブルを結合する方法は現在時代遅れです。以前は使用されていましたが、現在はキーワードINNER/NATURAL/LEFT OUTER/RIGHT OUTER/CROSSなどを使用して、要件に基づいてテーブルを結合しています。

MySQLでの参加を参照してください

SELECT hit.timestamp, 
       hit.id, 
       config.Name, 
       hit.meter_id, 
       levels.LevelName, 
       pos.sm_pos, 
       hit.hit_value 
FROM   hit 
       INNER JOIN config 
               ON hit.id = config.id 
       INNER JOIN levels 
               ON hit.meter_id = levels.id 
       INNER JOIN POS 
               ON pos.id = hit.id 
       INNER JOIN controllers 
               ON pos.controller_id = controllers.id; 

注:あなたが投稿したクエリはSQL-89標準に準拠しており、私が投稿した2番目のクエリはSQL-92に準拠しています。SQL-89のより複雑な(?)構文を置き換えるために導入さ
れたSQL-92標準。INNER JOIN .. ONOUTER JOIN .. ON

于 2012-06-11T08:36:34.627 に答える
1

クエリを再フォーマットする場合は、次のようにできます。

SELECT 
    H.timestamp,
    H.id,
    F.Name,
    H.meter_id,
    L.LevelName, 
    P.sm_pos, 
    H.hit_value 
FROM pos AS P
INNER JOIN controllers AS C ON P.controller_id = C.id
INNER JOIN hit AS H ON P.id = H.id
INNER JOIN levels AS L ON H.meter_id = L.id
INNER JOIN config AS F ON H.id =F.id;

テーブル名にエイリアスを自由に追加したことに注意してください。これにより、クエリが大幅に簡素化されます。

MySQL で結合がどのように機能するかを理解するには、マニュアルのこちらをお読みください。結合に関する優れたチュートリアルは、Jeff Atwood によって書かれています。ここで見つけることができます。

于 2012-06-11T08:43:28.587 に答える