我有三個表,用戶表,家庭表和family_relation表。用戶表具有所有成員,家庭表有兩列relation_id和relation_name。 Family_relation表有3列,member_id,second_member_id和relation_id。我無法加入3個表,其中一個加入了兩次列
在family_relation表中,我有這兩行,1,3和1,1,2和2,它們應該被翻譯成member_id - > 1 second_member_id - > 3,並且它們的關係已結婚。
下一行應該翻譯成成員1和成員2通過成爲兄弟姐妹相關。當我將這三個表連接在一起時,我需要將'member_id'轉換爲用戶表的名稱,但似乎無法將'second_member_id'轉換爲用戶表中的名稱。家庭餐桌也翻譯得很好。
此外,如果表的結構以及它們如何相關,請告訴我如何有一個有效的替代方案。
這裏是我的代碼
SELECT family_relation.*, users.firstName, '+
' family.relation FROM family_relation '+
' JOIN users ON users.id = family_relation.member_id'+
' JOIN family on family.id = family_relation.relation_id '+
' WHERE family_relation.member_id = ?'+
' UNION SELECT family_relation.*, users.firstName,'+
' family.relation FROM family_relation'+
' JOIN users ON users.id = family_relation.member_id'+
' JOIN family on family.id = family_relation.relation_id'+
' WHERE family_relation.second_member_id = ?'
輸出:
[ RowDataPacket {
member_id: 11,
second_member_id: 40,
relation_id: 2,
firstName: 'Thomas',
relation: 'Child' },
RowDataPacket {
member_id: 11,
second_member_id: 31,
relation_id: 2,
firstName: 'Thomas',
relation: 'Child' },
RowDataPacket {
member_id: 11,
second_member_id: 42,
relation_id: 1,
firstName: 'Thomas',
relation: 'Spouse' } ]
我使用的是工會在這裏,因爲當用戶通過一個ID,也可能是second_member_id那等於傳遞ID的一個。輸出應該是這樣的,用戶傳遞一個id,循環遍歷table family_relation,然後輸出Thomas關係到黛安娜(已婚/孩子/兄弟等)或黛安娜有關托馬斯(已婚/孩子/兄弟等)。
您可以發佈您的表的屏幕截圖和預期產出? –