![]() | |
#11
| |||
| |||
|
#12
| |||
| |||
|
|
You said......all the join conditions have to be full on both sides, i.e., they have to be *full* outer joins. All other join conditions only have to full on one side. |
#13
| |||
| |||
|
|
Jan, it appears something must be missing in our algorithm. I had no problem implementing it and I put a print statement in place of the check of the join condition. That way I can see that I'm walking the nodes correctly. You said......all the join conditions have to be full on both sides, i.e., they have to be *full* outer joins. All other join conditions only have to full on one side. .. that seems true for the algorithm but not for SQL FROM clauses I'm trying to model. The join conditions can be Inner, Outer, Left, or Right. |
|
For example, in my 3 table query above join conditions like these denote a valid query: A Left Join C C Inner Join B A Left Join B In my code I load the 3 tables and 6 edges (3 edges in both directions) and I walk the graph with this output: |
|
(TableA,TableC) Left Outer Join *** (TableC,TableB) Inner Join (TableA,TableB) Left Outer Join At the asterisks the code would have stopped to report a conflict. Am I doing somethng wrong or do we need somethin more complex to handle the 4 possible states of a join? Any ideas? |
![]() |
| Thread Tools | |
| Display Modes | |
| |