的比方說,我有這樣的結構,在我的數據庫:我的查詢返回大量列
Table Grandparent (Id, Name)
Table Parent (Id, GrandparentId, Name)
Table Child (Id, ParentId, Name)
這是不是一個真正的結構,只是理論......(考慮到一個事實,這種結構可取而代之的是1人桌,其中有parentId,是的,我知道)。當然,我們假設沒有性別......只有祖先和後代,就是這樣。
好的。所以。假設這些表格按年齡分類。老人們去了祖父母的餐桌。中年人去父母的桌子,孩子們去兒童桌子。
那麼我如何查詢屬於一個祖父母的所有孩子呢?
我嘗試這樣做:
SELECT * FROM Child
JOIN Parent ON Child.ParentId = Parent.Id
JOIN Grandparent ON Parent.Id = Grandparent.GrandParentId
WHERE Grandparent.GreatGrandParentId = 1;
其實它的工作原理,但返回大量列(不是行,列)。小惱人,但我可以忍受。我會很高興任何改進。謝謝。
哇。涼。謝謝。 –
我不應該使用完整的外連接或任何其他連接類型? –
不,您正在使用的內部連接很好,因爲您只需要匹配行。也就是說,你不關心'Child'中沒有匹配的'Parent'或'Parent'而沒有匹配的'祖父母'的東西。 –