Отображать сообщения, связанные только с поставщиком в MySQL - PullRequest
0 голосов
/ 29 января 2019

У меня две разные роли на моем сайте.

1) Поставщик 2) Пара

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

Вот мои структуры таблиц с примерами данных:

Это мои 'Потоки'table:

 id | subject        | created_at          | updated_at
----------------------------------------------------------------
 42 | Hello supplier | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 43 | Interested in  | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 44 | Hi there       | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 45 | Hello          | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 46 | Hi             | 2019-01-14 13:45:45 | 2019-01-14 13:45:45

Это моя таблица' участников ':

 id | thread_id | user_id  | last_read           | created_at
---------------------------------------------------------------------
 54 | 42        |   63     | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 55 | 42        |   43     | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 56 | 46        |   108    | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 57 | 46        |   11     | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 58 | 44        |    7     | 2019-01-14 13:45:45 | 2019-01-14 13:45:45
 59 | 44        |   60     | 2019-01-14 13:45:45 | 2019-01-14 13:45:45

Это моя таблица' user ':

 id | name   |   role    | created_at
------------------------------------------------
 7  | ali    |  supplier | 2019-01-14 13:45:45 | 
 63 | anas   |  couple   | 2019-01-14 13:45:45 | 
 43 | zain   |  supplier | 2019-01-14 13:45:45 | 
 11 | alex   |  supplier | 2019-01-14 13:45:45 | 
 60 | ammy   |  couple   | 2019-01-14 13:45:45 |
108 | zia    |  couple   | 2019-01-14 13:45:45 | 

Это моя'таблица поставщиков:

 id |user_id |  avatar   | business_name | Created_at
--------------------------------------------------------------
 5  |    7   |   a.jpeg  |  Abc supplier | 2019-01-14 13:45:45  
 7  |   11   |   b.jpeg  |  Bcd supplier | 2019-01-14 13:45:45 
15  |   43   |   c.jpeg  |  Def supplier | 2019-01-14 13:45:45 

Это моя таблица «пар»:

 id |user_id |  avatar    | name | Created_at
------------------------------------------------------
 7  |   63   |   ab.jpeg  | Anas | 2019-01-14 13:45:45  
21  |  108   |   cd.jpeg  | Zia  | 2019-01-14 13:45:45 
 4  |   60   |   ef.jpeg  | Zia  | 2019-01-14 13:45:45 

Это мой запрос

SELECT t.*, s.user_id as supplier_id, c.name, c.avatar,
       c.user_id as couple_id, u.role as currentUserRole
FROM threads t
    INNER JOIN participants p ON p.thread_id = t.id
    INNER JOIN users u
    INNER JOIN couple c ON c.user_id = p.user_id
    INNER JOIN supplier s
WHERE s.user_id = 43 AND u.id = 43

, и текущий результат равен

id |      Subject   | supplier_id | name | avatar  | couple_id | current user Role
------------------------------------------------------------------------------------
42  | Hello supplier|       43    | zain | ab.jpeg |     63    |    supplier 
44  | Hi there      |       43    | zain | cd.jpeg |    108    |    supplier 
46  | Hi there      |       43    | zain | cd.jpeg |    108    |    supplier

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

1 Ответ

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

попробуйте

SELECT 
    t.*,
    s.user_id AS supplier_id,
    c.name,
    c.avatar,
    c.user_id AS couple_id,
    u.role AS currentUserRole
FROM
    threads t
        INNER JOIN
    participants p ON p.thread_id = t.id
        INNER JOIN
    users u on p.user_id=u.id
        INNER JOIN
    couple c ON c.user_id = u.id
        INNER JOIN
    supplier s on s.user_id= u.id
WHERE
    s.user_id = 43 AND u.id = 43;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...