|----------------------------|
| Tbl_1 |
|--------------|-------------|
| id | name_1 |
|--------------|-------------|
| 1 | t_1_rec_1 |
|--------------|-------------|
|------------------------------------------------------------|
| Tbl_2 |
|-------|--------------|-----------|------------|------------|
| id | name_2 | tbl_1_id | tbl_3_id | tbl_4_id |
|-------|--------------|-----------|------------|------------|
| 1 | t_2_rec_1 | 1 | 1 | 2 |
| 2 | t_2_rec_2 | 1 | 2 | 1 |
|-------|--------------|-----------|------------|------------|
|------------------------|
| Tbl_3 |
|----------|-------------|
| id | name_3 |
|----------|-------------|
| 1 | t_3_rec_1 |
| 2 | t_3_rec_2 |
|----------|-------------|
|----------------------|
| Tbl_4 |
|--------|-------------|
| id | name_4 |
|--------|-------------|
| 1 | t_4_rec_1 |
| 2 | t_4_rec_2 |
|--------|-------------|
|--------------------------------------------|
| Tbl_5 |
|------|------------|------------|-----------|
| id | name_5 | tbl_2_id | tbl_6_id |
|------|------------|------------|-----------|
| 1 | t_5_rec_1 | 1 | 1 |
| 2 | t_5_rec_2 | 1 | 2 |
|------|------------|------------|-----------|
|----------------------------------|
| Tbl_6 |
|-------|------------|
| id | name_6 |
|-------|------------|
| 1 | t_6_rec_1 |
| 2 | t_6_rec_2 |
|-------|------------|
我期待這些結果聯接未返回記錄:內部聯接在左當左加入記錄不存在
t1.name_1 t2.name_2 t3.name_3 t4.name_4 t5.name_5 t6.name_6
t_1_rec_1 t_2_rec_1 t_3_rec_1 t_4_rec_2 t_5_rec_1 t_6_rec_1
t_1_rec_1 t_2_rec_1 t_3_rec_1 t_4_rec_2 t_5_rec_2 t_6_rec_2
t_1_rec_1 t_2_rec_2 t_3_rec_2 t_4_rec_1
select t1.name_1, t2.name_2, t3.name_3, t4.name_4, t5.name_5, t6.name_6
from Tbl_1 as t1
left join Tbl_2 as t2 on t2.id = t1.id
inner join Tbl_3 as t3 on t2.tbl_3_id = t3.id
inner join Tbl_4 as t4 on t2.tbl_4_id = t4.id
left join Tbl_5 as t5 on t5.id = t2.id
inner join Tbl_6 as t6 on t2.tbl_6_id = t6.id
但這不起作用!!!!!第三行不返回。將最後一個內連接(Tbl_6)更改爲左連接確實會生成第三行。
我知道Tbl_5和Tbl_6之間的內部連接會導致沒有Tbl_5記錄,但我認爲Tbl_2和Tbl_5之間的左連接會導致Tbl_2和其內部連接的Tbl_3和Tbl_4記錄存在,並且作爲Tbl_1的結果留給Tbl_2,我會得到第三行。
我錯過了什麼? (我不想改變內部連接,因爲我不希望Tbl_5記錄在後面沒有Tbl_6條目)另外,這個查詢是從一個Zend Db類生成的,我需要能夠將任何答案納入,但我想,如果有一個查詢工作正常,或如我所料,那麼我會弄清楚如何讓Zend生成它...
在FROM子句中按順序處理表1,2,5,3,4,6。 – 2013-05-11 21:55:03