Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: как сделать запрос в две таблицы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
MadMike
Отправлено: 26 Сентября, 2012 - 20:27:32
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)

[+]


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

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

Мне нужно вывести те материалы у которых значение title совпадают со значениями первой таблицы столбца cb_actions .
Короче вывести материалы выбранные пользователем в поле cb_actions...
 
 Top
Tox
Отправлено: 26 Сентября, 2012 - 20:30:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Читайте маны. это все есть в сети.


-----
In Console We Trust. Code hard. Or die.
 
 Top
Okula
Отправлено: 26 Сентября, 2012 - 20:32:52
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT a.*, b.* FROM `h1vu5_comprofiler` AS a
  2. LEFT OUTER JOIN `h1vu5_content` AS b
  3. ON a.`cb_actions`=b.`title`
 
 Top
MadMike
Отправлено: 26 Сентября, 2012 - 20:41:06
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)

[+]


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


А запрос Okula не понятен мне. Пишет Not data base selected

(Отредактировано автором: 26 Сентября, 2012 - 20:42:20)

 
 Top
biperch
Отправлено: 27 Сентября, 2012 - 16:17:49
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




запрос Okula правильный, и ваш тоже имеет право на жизнь, но в вашем я бы LIKE заменил на =
проверьте есть ли там соответствия по которым вы связываете таблицы

(Отредактировано автором: 27 Сентября, 2012 - 16:18:49)

 
 Top
MadMike
Отправлено: 27 Сентября, 2012 - 17:52:50
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)

[+]


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

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


//-----------запрос №3---------------//
CODE (SQL):
скопировать код в буфер обмена
  1. $query = $db->getQuery(true);
  2. $query->select('*');
  3. $query->from('#__content');
  4. $query->where('catid = 8');
//вывел титлы всех мероприятий


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

Вот теперь как сравнить их адекватно чтобы вывести с таблицы материалов титлы только тех которые в др таблице имеются?
 
 Top
Okula
Отправлено: 27 Сентября, 2012 - 18:42:20
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




MadMike пишет:
А запрос Okula не понятен мне. Пишет Not data base selected

Значит неправильно использовал его.
 
 Top
biperch
Отправлено: 27 Сентября, 2012 - 20:16:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




Okula пишет:
MadMike пишет:
А запрос Okula не понятен мне. Пишет Not data base selected

Значит неправильно использовал его.

верно подмечено запрос написан правильно, его только нужно правильно использовать в вашем фреймворке или через то что у вас
 
 Top
MadMike
Отправлено: 28 Сентября, 2012 - 06:36:42
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)

[+]


Я не понимаю запрос Акулы. Помогите мой добить.



материалы в столбце cb_actions хранятся в таком виде:
титл 1 |*| титл2 |*| титл3

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

и т.п.

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

Мне нужны титлы контента.


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


PHP:
скопировать код в буфер обмена
  1. for ($i=0; $i < count($cb_actions); $i++)
  2. {
  3.     $action = $cb_actions[$i];
  4.     $query->where("title LIKE %{$action}%");
  5. }

Только не работает чот((

(Отредактировано автором: 28 Сентября, 2012 - 07:15:33)

 
 Top
Okula
Отправлено: 28 Сентября, 2012 - 07:54:54
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




MadMike, что ж непонятного-то в нём? Учи операторы LEFT и JOIN.
Вот как должен быть запрос:
PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT a.*, b.* FROM `h1vu5_comprofiler` AS a
  2. LEFT OUTER JOIN `h1vu5_content` AS b
  3. ON a.`cb_actions`=b.`title`");
 
 Top
MadMike
Отправлено: 28 Сентября, 2012 - 08:33:53
Post Id



Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)

[+]


Okula пишет:
MadMike, что ж непонятного-то в нём? Учи операторы LEFT и JOIN.
Вот как должен быть запрос:
PHP:
скопировать код в буфер обмена
  1. $mysqli->query("SELECT a.*, b.* FROM `h1vu5_comprofiler` AS a
  2. LEFT OUTER JOIN `h1vu5_content` AS b
  3. ON a.`cb_actions`=b.`title`");


не прокатывает равенство обычное!
 
 Top
Okula
Отправлено: 28 Сентября, 2012 - 08:38:36
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




MadMike, а тебе какое равенство нужно? необычное? Радость
Запрос написал исходя из первого поста.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB