попытка отобразить результаты из JOIN mysql, которых нет ни в одной из таблиц

#mysql #join

#mysql #Присоединиться

Вопрос:

У меня есть две таблицы: a_users и a_student_tutors. Я в основном пытаюсь объединить два по их идентификационным номерам. Тем не менее, я пытаюсь найти участников, которых нет в a_student_tutors, и отобразить их.

вот кодирование, например

 $queryone = "SELECT * from a_users JOIN a_student_tutors on a_users.id=a_student_tutors.mem_id ";

$resultone = mysql_query($queryone);

while ($row=mysql_fetch_assoc($resultone)){
$member = $row['mem_id'];

$query = "SELECT * FROM a_users where id != '$member'";
echo $query;

}
$result = mysql_query($query);
$numrows = mysql_num_rows($result);

while ($row=mysql_fetch_assoc($result)){
    echo "<tr>
          <td><a href="members-edit.php?id=".$row['id']."">".$row['name']."</a></td>
          <td>".$row['username']."</td>
          <td>".$row['address']." | ".$row['city']." | ".$row['postcode']."</td>
           <td ><input type="checkbox" name="checkbox[]" id="checkbox[]" value="".$row['id']."" /></td>
          </tr>";
}
  

Комментарии:

1. В чем именно заключается ваш вопрос?

Ответ №1:

Вы также можете использовать левое соединение следующим образом, я знаю, что они работают очень хорошо, так как много использовали их за последние несколько лет.

 SELECT a_users.* FROM a_users
LEFT JOIN a_student_tutors
    ON a_users.id = a_student_tutors.mem_id
WHERE a_student_tutors.mem_id IS NULL
  

Ответ №2:

Вам поможет подвыборка.

 SELECT * FROM a_users 
WHERE id NOT IN (SELECT a_student_tutors.mem_id);
  

Будьте осторожны с подвыборами, поскольку это сложные запросы, которые могут снизить производительность.

Ответ №3:

Вы должны использовать ЛЕВОЕ СОЕДИНЕНИЕ вместо ВНУТРЕННЕГО СОЕДИНЕНИЯ (JOIN)