Как мне объединить эти 3 таблицы и заставить работать мой запрос Select? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть 2 таблицы:

review_shared:

review_shared_id    cat_id    user_id     contact_id
19                   5        10276       10275
20                   5        10276       10277
21                   5        10276       10273
15                   6        10279       10277

Категория:

cat_id    user_id    cat_name
  3        10278        A
  4        10279        B
  5        10276        C
  6        10279        D        

Я выполняю свой запрос с помощью:

$sql = "
SELECT * 
  FROM review_shared 
  JOIN category 
    ON review_shared.cat_id = category.cat_id 
 WHERE review_shared.contact_id = ?
";

С review_shared.contact_id как 10277, приведенное выше даст мне:

review_shared.                                 category.
review_shared_id  cat_id  user_id  contact_id  cat_id  user_id  cat_name
    20                5       10276    10277       5       10276    C
    15                6       10279    10277       6       10279    D

Теперь у меня есть третья таблица, contacts:

contact_auto_inc   user_id  contact_id
1                   10278    10273
2                   10277    10276
3                   10261    10285

, если contacts в таблице есть строка с user_id в качестве 10277 и contact_id в качестве значения user_id в таблице review_shared, тогда я хочу вернуть эти значения.Таким образом, в приведенном выше случае результат будет (с review_shared.contact_id = ? как 10277):

review_shared.                                 category.
        review_shared_id  cat_id     user_id  contact_id  cat_id  user_id  cat_name  contact_auto_inc   user_id  contact_id
            20                5       10276    10277       5       10276    C          2                 10277    10276

Это утверждение, которое я использую, но, похоже, оно не работает:

$sql = "
SELECT * 
  FROM review_shared 
  JOIN category 
    ON review_shared.cat_id = category.cat_id 
  JOIN contacts 
    ON review_shared.contact_id = contacts.user_id 
   AND contacts.contact_id = review_shared.user_id
 WHERE review_shared.contact_id = ?
";

Ответы [ 2 ]

1 голос
/ 15 марта 2019

у вас есть ошибка в контакте присоединиться:

$sql = "
SELECT * 
  FROM review_shared 
  JOIN category 
    ON review_shared.cat_id = category.cat_id 
  JOIN contacts 
    ON review_shared.contact_id = contacts.contact_id
 WHERE review_shared.contact_id = ?
";
0 голосов
/ 15 марта 2019

В качестве альтернативы вы можете попробовать равнодушие Нравится:

SELECT * 
FROM review_shared r, category c, contacts p,
WHERE r.cat_id = c.cat_id 
AND p.contact_id = r.user_id
AND r.contact_id = ?
...