Mysql запрос к двум таблицам со сравнением

Mick_20

Новичок
Помогите сделать запрос.

У меня есть две таблицы:
В одной - h1vu5_comprofiler есть столбец "cb_actions" в котором хранятся названия материалов отмеченных пользователем.
Вторая таблица - материалы - h1vu5_content.

Мне нужно вывести те материалы у которых значение title совпадают со значениями первой таблицы столбца cb_actions .
Короче вывести материалы выбранные пользователем в поле cb_actions...

Пробовал вот так :
PHP:
SELECT * 
FROM h1vu5_content,h1vu5_comprofiler 
WHERE h1vu5_content.title LIKE h1vu5_comprofiler.cb_actions
Работает но ничего не выводит
 

SiZE

Новичок
Сравнивать заголовки в корне неправильно. Надо хранить ID записи.

Код:
SELECT t1.* FROM h1vu5_content as t1 INNER JOIN h1vu5_comprofiler as t2 ON( t2.cb_actions=t1.title )
 

Mick_20

Новичок
В общем вот к чему я пришел и застрял!

PHP:
$query2 = $db->getQuery(true);
$query2->select('cb_actions');
$query2->from('#__comprofiler');
$query2->where("user_id = {$userid}");
$db->setQuery($query2);
$cb_actions = $db->loadResult();
$cb_actions = explode('|*|', $cb_actions);
//разбили на массив строк, получили титлы мероприятий пользователя


//-----------запрос №3---------------//
PHP:
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__content');
$query->where('catid = 8');
//вывел титлы всех мероприятий


Титлы типо такого: КОНКУРС УЧЕНИЧЕСКИХ РАБОТ «ЛАБИРИНТЫ ЗНАНИЙ»

Вот теперь как сравнить их адекватно чтобы вывести с таблицы материалов титлы только тех которые в др таблице имеются?
 

eax

#
Да джумла это отдельный вопрос.... У вас что материалы в столбце cb_actions хранятся в таком виде:
PHP:
титл 1 |*| титл2 |*| титл3
итд ???
 

Mick_20

Новичок
Да джумла это отдельный вопрос.... У вас что материалы в столбце cb_actions хранятся в таком виде:
PHP:
титл 1 |*| титл2 |*| титл3
итд ???
да! именно!

я сделал из них массив:
PHP:
Array ( [0] => КОНКУРС «РАДУГА ПРОЕКТОВ» ДЛЯ ДОШКОЛЬНИКОВ И МЛАДШИХ ШКОЛЬНИКОВ ) 
Array([1] ...)
и т.п.

Я не могу понять как теперь титлы из таблицы контента сравнить с этими значениями и вывести совпадающие.

Вот так может?

PHP:
for ($i=0; $i < count($cb_actions); $i++) 
{
	$action = $cb_actions[$i];
	$query->where("title LIKE %{$action}%");
}
Только не работает чот((
 

eax

#
Нужно сначала правильно спроектировать базу. Вынести ваш cb_actions в виде id материала в отдельную таблицу, со столбцами id пользователя и id материала. При выборе пользователем материала, нужно записывать эту связь именно в эту таблицу. А с тем что вы сейчас делаете вам врятли тут помогут :)
 

eax

#
А кто заголовки записывает в cb_actions ? Ваш или какой-то чужой мега-плагин?
 

Mick_20

Новичок
cb_actions это поле мультичекбокс в регистрации в Comunity Builder. Типо в личном кабинете или при регистрации можно галочки ставить рядом с названием мероприятия. А названия я руками ввожу.
 

eax

#
То есть пользователь отмечает материалы, и их заголовки пишутся в cb_actions в таблицу пользователя? Только так неправильно, нужно писать id мероприятий, те которые в `content` но не заголовки, и писаться они должны в отдельную таблицу. Прочитайте про связь "многие ко многим", именно такая связь между таблицей пользователей и таблицей мероприятий.
 
Сверху