Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Sql and where clauses
Message
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Miscellaneous
Thread ID:
00236881
Message ID:
00236969
Views:
9
Why not do the following (since you already know that table2.id = table1.id and that table2.lproperty = .T. in a correct result set)?

SELECT id FROM table1 ;
WHERE id IN ;
(SELECT id FROM table2 WHERE lproperty)

>Hi all,
>
>we've run into some counterintuitive (to us) behaviors of SQL. What we wanted is to obtain a resultset which contained all id's from table1 that had the property yy.lproperty, leaving out the records for which lproperty was .F. .What we got is all ids from table1 with .NULL. for yy.id and yy.lproperty from table2 for the records that had lproperty = .F. .This is easily fixed by using an INNER JOIN instead of a LEFT JOIN. We felt however that the result should be the same, because of the where clause. We always thought that the where clause affected all records in the resultset, so the conditions would be applied after the tables had been joined. It seems to work exactly that way with INNER JOINs, but not with LEFT JOINs. In LEFT JOINs the where clause seem to act as though they had been included in the JOIN-condition, ie the condition applies to the table to be joined first. That way, it decides first which records from table2 conform to the where clause condition. So, rather than
>deleting the record from the resultset, the join just fails and .null.'s result.
>
>SELECT xx.id,yy.id,yy.lproperty;
> FROM table1 xx ;
> LEFT JOIN table2 yy ON xx.id == yy.id ;
> WHERE yy.lproperty
>
>and
>
>SELECT xx.id,yy.id,yy.lproperty;
> FROM table1 xx ;
> LEFT JOIN table2 yy ON xx.id == yy.id and yy.lproperty
>
>vs.
>
>SELECT xx.id,yy.id,yy.lproperty;
> FROM table1 xx ;
> INNER JOIN table2 yy ON xx.id == yy.id ;
> WHERE yy.lproperty
>
>Can someone enlighten us on this one?
>
>regards,
>derk schutte
Previous
Reply
Map
View

Click here to load this message in the networking platform