2012-10-30 12 views

Trả lời

9

ON thay thế điều kiện tham gia ban đầu,
WITH thêm điều kiện vào nó.


Ví dụ:

[Album] ---OneToMany---> [Track] 
  1. Trường hợp Một

    DQL

    FROM Album a LEFT JOIN a.Track t WITH t.status = 1 
    

    sẽ dịch trong SQL

    FROM Album a LEFT JOIN Track t ON t.album_id = a.id AND t.status = 1 
    
  2. Trường hợp Hai

    DQL

    FROM Album a LEFT JOIN a.Track t ON t.status = 1 
    

    sẽ dịch trong SQL

    FROM Album a LEFT JOIN Track t ON t.status = 1 
    
+1

Cảm ơn câu trả lời của bạn, nhưng tôi không thực sự nhận được quan điểm của bạn, bạn có thể cung cấp cho tôi một ví dụ không? – Trent

+1

Có, giả sử bạn có một bảng Album được liên kết với một bảng Theo dõi (một đến nhiều) ... Trong DQL, nếu bạn thực hiện 'TỪ TÊN một TÊN TRÁI ĐÂY. Track t VỚI t.status = 1', đó là tương đương với SQL 'TỪ TÊN một LEFT THAM GIA Theo dõi t ON t.album_id = a.id AND t.status = 1' Nhưng nếu bạn thực hiện' TỪ TÊN TÊN LÁI TÊN. Tack t ON t.status = 1' , nó sẽ tương đương với SQL 'FROM Album một LEFT JOIN Track t ON t.status = 1', do đó thay thế điều kiện quan hệ (' t.album_id = a.id'). Hy vọng tôi rõ ràng! – theredled

+0

cảm ơn tuyệt vời, hiện đã rõ. – Trent