2010-12-01 10 views
1

私は完全に独学ですので、私の知識には明らかな隙間があります。複数のテーブルからデータを取得する必要があるときに、結合を行う方法を学びました。すべてのバウチャーレコードを返し、任意のでしょうmySQLのジョインと他のメソッド

select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v 
left join addresses a on v.acctID = a.id 

:私はバウチャー番号、口座番号、およびバウチャーテーブルと他のテーブルから対応するアドレスからのバランスを必要とする場合、例えば、私はこれを行うだろう(この場合、対応する住所がない場合でも伝票レコードを返すので、左の結合になります)

私は最近、同じデータを取得しようとしているように見えるコードを継承しましたこの場合、正しいレコードが返されます)。

select v.voucherNbr, v.balanceInit, v.acctID, a.address, a.city from vouchers v, addresses a 
where v.acctID = a.id 

誰でも私に、結合を使用する代わりにそれを行うことの意味を説明できますか?私が言ったように、この特定のケースでは、結合と同じデータを返しますが、それはいつもそうでしょうか?

答えて

3

これは結合であり、暗黙的なものです。これはコーディングが貧弱なため、内部結合で置き換える必要があります。

この旧式のコードの問題は、誤ってクロスジョインを作成してコードを維持することが難しいことです。同じクエリで暗黙的および明示的な結合を混同しないでください。

関連する問題