質問: 1 tableにaとbという別名をつけて、aの全ての項目を抽出しているというところまでは分かりました。 分からないのは「where a.id *= b.id」の部分です。ただの「=」なら分かりますが「*=」って何ですか? あと、aとbのテーブルが同じなのですが、同じテーブルを2つ並べている意味がよく分かりません。 よろしくお願いします。
回答: sybaseでしょうか? 結論から申しますと、意味の無い結合条件です。 「a.id *= b.id」とは「aにあればbに無くてもよい」と言う意味です。 a:bが有:有、有:無なら対象、無:有は対象外ということです。 しかし、aとbは同じテーブルなので、有:無になることはありません。 意味があるのは「a.flag = 1」という条件だけです。 但し、同じテーブル同士を結合する例は結構でてきます。だから、 「同じテーブル同士を結合することは意味が無い」と決め付けない でください。ベテランと言われるseの中にも同じテーブル同士を 結合させると言う発想ができない人がかなりいます。