Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица USER в которой хранятся следующие данные:
++++++++++++++++++++++++++++++++++++
+LOGIN ++ CAT1 ++ CAT2 ++ CAT3 ++ RATING +
++++++++++++++++++++++++++++++++++++
+ petr || 1 || 3 || 5 || 1 +
+++++++||+++++||+++++||++++++||+++++++
+ ivan || 2 || 3 || 5 || 3 +
++++++++++++++++++++++++++++++++++++
Есть таблица CATALOG
++++++++++++++
+ ID ++ NAME +
++++++++++++++
+ 1 || op1 +
+++++||+++++++
+ 2 || op2 +
+++++||+++++++
+ 3 || op3 +
+++++||+++++++
+ 4 || op3 +
+++++||+++++++
+ 5 || op3 +
+++++||+++++++
+ 6 || op3 +
++++++++++++++
Есть запрос в БД
$job_cat= "1";
$query=mysql_query("SELECT user.login AS name, user.cat1, user.cat2, user.cat3, user.rating
FROM user
WHERE user.cat1 = '".$job_cat."' OR user.cat2 = '".$job_cat."' OR user.cat3 = '".$job_cat."'
ORDER BY rating);
Далее вывожу все полученные строки в цикле while (с этим проблем нет) но вот, как в него же (в запрос) вывести все категории (op1,op2,...) к которым относится пользователь из таблицы catalog?
Помогите плиз с запросом в БД?!
Отредактированно lidervik (19.01.2012 01:01:46)
Неактивен
Трехкратный join ?
http://dev.mysql.com/doc/refman/5.5/en/join.html
Неактивен
vasya написал:
Трехкратный join ?
http://dev.mysql.com/doc/refman/5.5/en/join.html
Спасибо! Да наверное это как раз то что надо. Пойду пробовать, а есть ли еще какие варианты, так для расширения кругозора. С MySQL встречаюсь первый раз в жизни и за два дня изучения уж очень язык SQL-запросов попил моей кровушки ))
Неактивен
Подзапросы.
Неактивен
lidervik написал:
$job_cat= "1";
$query=mysql_query("SELECT user.login AS name, user.cat1, user.cat2, user.cat3, user.rating
FROM user
WHERE user.cat1 = '".$job_cat."' OR user.cat2 = '".$job_cat."' OR user.cat3 = '".$job_cat."'
ORDER BY rating);
Получилось следующие:
$job_cat= "1";
$query=mysql_query("SELECT user.login AS name, catalog.name AS cName1, user.cat1, user.cat2, user.cat3, user.rating
FROM user LEFT JOIN catalog ON user.cat1 = catalog.id
WHERE user.cat1 = '".$job_cat."' OR user.cat2 = '".$job_cat."' OR user.cat3 = '".$job_cat."'
ORDER BY rating);
С одним я разобрался, получил в цикле 'cName1' со значением поля op1, а как быть с остальными значениями, мне еще нужны cName2, cName3, как их получить?
Отредактированно lidervik (19.01.2012 02:34:11)
Неактивен
SELECT user.login AS name, catalog.name AS cName1, user.cat1, user.cat2, user.cat3, user.rating, ...
FROM user JOIN catalog ON user.cat1 = catalog.id JOIN catalog c2 ON user.cat2 = c2.id JOIN catalog c3 ON user.cat3 = c3.id
WHERE user.cat1 = '".$job_cat."' OR user.cat2 = '".$job_cat."' OR user.cat3 = '".$job_cat."'
ORDER BY rating
А зачем вам left join? Разве у вас могут быть в первой таблице значения категорий, которых нет во второй?
Неактивен
Все получилось. Спасибо тебе добрый человек!
Неактивен