この投稿は、u010572351 によって 2013-06-30 12:01:20 に最終編集されました
状況は次のようになります。左のユーザーテーブル、商品テーブル、ユーザー購入商品レコードテーブルの3つのテーブルが接続されており、商品レコードテーブルはユーザーIDと商品IDを記録し、ユーザーテーブルと商品テーブルを関連付けています。 、ユーザー名と製品名を含む製品レコードをクエリするには、3 つのテーブルが必要です。
ユーザーテーブル: uid,uname
商品テーブル: gid,gname
ショップテーブル: id,uid,gid
書き方を見てみましょう?
このように書きました。まずレコード テーブルとユーザー テーブルを接続して一時テーブルを形成し、次に一時テーブルと製品テーブルの間に左結合を使用します。結果が間違っています。なぜですか? ? ?
select * from<br />
(shop left join users on shop.uid=users.uid)<br />
as tmp<br />
left join goods on tmp.gid=goods.gid;(提示错误)
これは正しい書き方ですが、理解できません: (一時テーブルの概念がありません)
select * from<br />
(shop left join users on shop.uid=users.uid)<br />
left join goods on shop.gid=goods.gid;(貌似正常)
1. A がテーブル B に接続されたままになると、新しいテーブルが表示され、新しいテーブルはテーブル C に接続されたままになると理解しています。これが間違っているかどうかはわかりません/
2. A を B に接続したままにしてから C に接続する場合と、A を C に接続したままにしてから B に接続する場合には違いがあるといつも感じています。