2017-02-22 33 views
0

У меня есть следующие таблицы:Получение реляционных данных таблиц

member 
id, firstName, lastName 

team 
id, name 

teamMember 
id, teamId, memberId 

Я пытаюсь получить доступ к реляционной таблице, так что я могу вывести члены ПгвЬЫата и LastName:

$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.

так что конечной целью здесь является то, что мне нужно получить доступ к реляционной таблице, чтобы вернуть мне имена членов, которые связаны с идентификатором команды, заданным в запросе выбора по идентификатору.

Я изо всех сил стараюсь получить выход.

И возвращают значения, как так:

$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) {

Выход я хочу видеть это члены firstName и lastName от member стол

+0

Просьба указать, что вы делаете и какой результат вы ожидаете. –

+0

@ParantapParashar Я включил дополнительную информацию. – PhpDude

+0

вы пытались запустить дамп var в '$ result', чтобы убедиться, что ваш запрос выводится правильно? – Option

ответ

1

Возможно, вам нужны все результаты или строки, связанные с желаемым идентификатором команды. Но, используя 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

Это, похоже, не разрешило проблему. Я все еще верю bool (false) в $ result – PhpDude

+0

Это потому, что у вас нет 'dashboardId' в любой из таблиц. Так вы должны удалить его из запроса. –

+0

Я сделал для цели тестирования – PhpDude