mysql вправо объединить 2 таблицы и выбрать все в table1 - PullRequest
0 голосов
/ 08 января 2019

Я использую две таблицы в базе данных и запрос. Таблицы выглядят так:

Таблица student

     id  |  studentid  |  name  |  room
  ----------------------------------------
      1  |    28778    |   a    |   1
      2  |    28779    |   b    |   2
      3  |    28785    |   c    |   2
      4  |    28300    |   d    |   2
      5  |    28301    |   e    |   2
      6  |    28302    |   f    |   2
      7  |    28303    |   g    |   2
      8  |    28304    |   h    |   3
      9  |    28305    |   i    |   3
     10  |    28306    |   j    |   3

Таблица image

     id  |student_id|  image_filename  |  type  |
  ---------------------------------------------------
      1  |     1    |    qwrioqw.jpg   |  m6-1  |
      2  |     1    |    oerqew.jpg    |  m6-2  |
      3  |     2    |    qwwqeqw.jpg   |  m6-2  |
      4  |     4    |    wqeioqw.jpg   |  m6-1  |
      5  |     4    |    qwwoqeqw.jpg  |  m6-2  |
      6  |     7    |    eqwrioqw.jpg  |  m6-1  |
      7  |     7    |    rewtoqw.jpg   |  m6-2  |
      8  |     8    |    asdsadas.jpg  |  m6-2  |

Я использовал команду SELECT name, id, image.image_filename, image.type FROM image RIGHT JOIN student ON student_id=student.id WHERE room=2 HAVING image.type = 'm6-2' ORDER BY id

Результат этой команды:

     name  |  id  |  image_filename  |  type  |
  ---------------------------------------------------
        b  |  2   |    qwwqeqw.jpg    |  m6-2  |
        d  |  4   |    qwwoqeqw.jpg   |  m6-2  |
        g  |  7   |    rewtoqw.jpg    |  m6-2  |

НО я хочу получить результат Все student.room = 2 И image.type = 'm6-2', если изображение m6-2 - это не то, что я хочу показать NULL:

     name  |  id  |  image_filename  |   type
  -----------------------------------------------
        b  |  2   |    qwwqeqw.jpg   |   m6-2
        c  |  3   |        NULL      |   NULL
        d  |  4   |    rewtoqw.jpg   |   m6-2
        e  |  5   |        NULL      |   NULL
        f  |  6   |        NULL      |   NULL
        g  |  7   |    rewtoqw.jpg   |   m6-2

Как мне написать команду?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете попробовать ниже - используя условие «другие» вместо «Где»

   SELECT name, id, image.image_filename, image.type 
    FROM image RIGHT JOIN student ON student_id=student.id 
    and room=2 and image.type = 'm6-2'
0 голосов
/ 08 января 2019

Вам нужно изменить ваш, чтобы получить ваш image.type, когда они равны NULL:

SELECT name, id, image.image_filename, image.type 
FROM image RIGHT JOIN student ON student_id=student.id 
WHERE room=2 and (image.type = 'm6-2' or image.type is null) 
ORDER BY id
...