• Thanks for answers but the fact is that I don't need this "o.type = 'abcd'" and if I had done this query by myself I would never have written this part at all ! 🙂

    I want to get all the objects (and that's what the query returns actually) but I wondered how the SQL Engine uses this criteria as the table in the criteria isn't the one concerned by the "left join".

    In a vegetable way, it's like checking if a carrot matches another carrot and someone come and say "Hey, among your carrots, only consider the red tomatoes". Well ...nonsense ...:crazy:

    I already know the difference between filtering in the "left join" part and in the "where" part

    So I thought that

    SELECT 1

    FROM a

    INNER JOIN b ON a.id_a = b.id_a

    LEFT JOIN c ON c.id_b = b.id_b AND a.version = 12

    would have been used in the same way as

    SELECT 1

    FROM a

    INNER JOIN b ON a.id_a = b.id_a AND a.version = 12

    LEFT JOIN c ON c.id_b = b.id_b

    although my results seem to be the same as

    SELECT 1

    FROM a

    INNER JOIN b ON a.id_a = b.id_a

    LEFT JOIN c ON c.id_b = b.id_b

    Btw, I don't have any idea of what I would expect by using the 1st syntax. 😉

    @ChrisM@Work: Yes, object_id is the object table PK