2017-01-12 4 views
1

Позволяет сказать, что я получил это таблицы:PHP MySQL - INNER JOIN: идентификатор = часть стоимости

пользователя:

userid  |  stuff 
777   |  bla 
888   |  bla2 
34   |  bla3 
66   |  bla4 

посетителей:

user_visitor | 
777_34  | 
888_34  | 
777_66  | 

Что мне нужно:

SELECT 
    * 
    FROM 
    visitors INNER JOIN user 
    ON 
    (the part after _ from user_visitor) = userid 
    WHERE 
    user_visitor LIKE '%777_%' 

поэтому, когда я разбираю userid a d и stuff я 34/bla3 и 66/bla4

Как я могу это сделать? Возможно ли это?

+1

Почему бы вам не разделить user_visitor на два столбца, например user_id и visitor_id. Я думаю, это будет очень легко, чем то, что вы пытаетесь сделать. –

+0

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

+0

Или можно сделать COMBO «пользователем» и «посетителем» уникальным? –

ответ

0

Это то, что вы хотите сделать,

SELECT l1.stuff 
FROM user_1 AS l1 
INNER JOIN visitors AS l2 
ON l2.user_visitor LIKE concat('%',l1.userid); 

Но я предлагаю вам следует разделить user_visitor на два столбца, как идентификатор пользователя и visitorid, то вы можете добавить уникальный индекс им нравится этот

ALTER TABLE visitors ADD UNIQUE unique_index(userid, visitorid); 

Тогда ваш запрос вроде этого.

SELECT l1.stuff 
FROM user_1 AS l1 
INNER JOIN visitors AS l2 
ON l2.visitorid = l1.userid 

Это более эффективно. Редактировать: вы можете сделать это в phpmyadmin.

+0

Очень приятно спасибо! –

+0

Добро пожаловать. –