2017-02-22 150 views
0

我有以下表格:獲取關係表數據

member 
id, firstName, lastName 

team 
id, name 

teamMember 
id, teamId, memberId 

我試圖訪問關係表,所以我可以輸出的成員名字和姓氏:

$sql = "SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
     FROM teamMember 
     JOIN member 
     JOIN team 
     ON teamMember.memberId = member.id 
     WHERE dashboardId = 1 AND team.id = 1"; 

我已經設置了硬在team.id中的價值,所以我可以測試以確保它現在返回團隊1的成員。

所以這裏的最終目標是我需要訪問關係表,以便通過ID返回與選擇查詢中設置的團隊ID關聯的成員的名稱。

我很努力地獲得輸出需求。

和返回值,像這樣:

$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     echo "{$row['firstName']} {$row['lastName']}<br>"; 
    } 
} 

我看到的錯誤是:

Notice: Trying to get property of non-object in 

其中提到:if ($result->num_rows > 0) {

我想看到的輸出是會員firstNamelastName來自member

+0

請提及你得到什麼,你期待什麼輸出。 –

+0

@ParantapParashar我已經包含了一些更多的信息。 – PhpDude

+0

您是否嘗試在'$ result'上運行var轉儲來查看您的查詢是否正確輸出? – Option

回答

1

您可能希望將所有結果或行與所需的團隊ID相關聯。但是,使用INNER JOIN,您只會爲一個團隊獲得單行,因爲這是JOIN的工作原理。

相反,你應該使用這樣的查詢:

SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
     FROM teamMember 
     JOIN member 
     ON teamMember.memberId = member.id 
     WHERE dashboardId = 1 AND teamMember.teamId = 1" 

希望這會工作。

但是,作爲bool(false),您的查詢也被打破,並不會得到您想要的結果。 在您的查詢中,您已經加入了三個表格並且僅爲其中一個定義了條件。這將是你的查詢應該看起來像

"SELECT member.id, member.firstName, member.lastName, team.id, teamMember.id, teamMember.memberId, teamMember.teamId 
     FROM teamMember 
     JOIN member 
     ON teamMember.memberId = member.id 
     JOIN team 
     ON teamMember.teamId= team.id 
     WHERE dashboardId = 1 AND team.id = 1"; 
+0

這似乎並沒有解決這個問題,我仍然支持$結果 – PhpDude

+0

bool(false)這是因爲你沒有在任何表中的dashboardId。所以你應該從查詢中刪除它。 –

+0

我已經完成了測試目的 – PhpDude