0

次の SQL ステートメントがあります。


SELECT *
FROM   cars car
       LEFT JOIN (SELECT *
                  FROM   cars auto
                         LEFT JOIN steeringwheels sw
                           ON auto.steeringwheelid = sw.ID
                  WHERE  material = 'leather') innertable
         ON innertable.ID = car.ID
       LEFT JOIN steeringwheels sw
         ON auto.steeringwheelid = sw.ID
WHERE sw.material='plastic'

このクエリは、「Cars」テーブルの列を 2 回配信しますが、ID の値は Car テーブルの値とは異なります (クエリの目的は、値をマッピングして、Car.ID が何であるかを確認して、マテリアルが変更されることを確認することです)。革からプラスチックへ)。


------------------------------------
| ID | material | ID_1 | material_1 |
-------------------------------------
| 1  | leather  | 4    | plastic    |
| 2  | leather  | 7    | plastic    |
-------------------------------------

ただし、次のように ID 列のみ (マテリアル列ではなく) を出力したいと思います。


-------------
| ID | ID_1 | 
-------------
| 1  |  4   |
| 2  |  7   | 
-------------

内部クエリの ID 列を参照する方法が見つからなかったため、これを行うことができませんでした。例えば


SELECT id, innertable.id
(...)

また


SELECT id, auto.id
(...)

また


SELECT id, id_1
(...)

動作しないようです。どうすればこれを達成できますか?

4

2 に答える 2

1

これはあなたが求めているものですか?

SELECT auto_id, steeringwheel_id
  FROM cars car 
       LEFT JOIN (SELECT auto.ID AS auto_id, sw1.id AS steeringwheel_id
                  FROM   cars auto 
                         LEFT JOIN steeringwheels sw1
                           ON auto.steeringwheelid = sw1.ID 
                  WHERE  material = 'leather') innertable 
         ON innertable.auto_ID = car.ID 
       LEFT JOIN steeringwheels sw2
         ON auto.steeringwheelid = sw2.ID 
  WHERE sw.material='plastic' 
于 2010-02-05T13:12:13.270 に答える
1

select ステートメントで、内部テーブルの列名を明示的にリストしてみてください。お気に入り:

...(SELECT auto.ID autoid, auto.Whatever)....

次に、メインで次を選択します。

SELECT innertable.autoid ....
于 2010-02-05T13:09:33.790 に答える