Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. Хочу объеденить этот запрос
$sql = "SELECT id
FROM cms_video_category c1
JOIN cms_video_category c2
ON c1.id = c2.parent_id
WHERE c1.seolink = '".$link."'
";
с этим
$sql = "SELECT v.*
FROM cms_video v
LEFT JOIN cms_video_category c
ON v.cat_id = //здесь должны быть id с первого запроса c1.id
LIMIT 1";
И что то не выходит. Пытался просто в скобки вставить второй запрос, но...Подскажите. Таблица` cms_video_category` одна и таже.
Отредактированно ureech (24.04.2014 00:17:00)
Неактивен
Вообще для того, чтобы объединить запросы используется union.
Только для этого нужно, чтобы количество, порядок и типы выбираемых полей совпадали в объединяемых запросах. А Вы в первом запросе выбираете одно поле, во втором несколько, так не полуится.
Неактивен
А как получится?
Неактивен
Как я писал выше - если будете выбирать одинаковое количество полей в каждом запросе, при этом чтобы их порядок и тип совпадали - так получится.
Не очень понимаю, как Вы хотите объединить два Ваших столь разнородных запроса.
Приведите структуру таблиц с тестовым набором данных - и результат, который Вы хотите получить.
Неактивен
Я хочу вывести картинки подкатегории в категории. Эти запросы всё на что хватило ума. Т.е. сначало я собирался получить id строк где присутствуют подкатегории(parent_id) соответствующей категории($link). Это в таблице категорий.(c) А затем получить получить сами картинки , они в другой таблице.(v). А cat_id (v) = id (c). Как привести структуру таблиц с данными я что не понял.Снять дамп обоих таблиц?
Неактивен
Да, проще всего снять дамп обеих таблиц - и структуру и данные. И приведите пример результата - какой Вы хотите получить, основываясь на Ваших данных.
Неактивен
На примере категории "Музыка".(Табл. cms_video_category. ) id = 1049. Имеет две подкатегории id = 1052, 1053.
В таблице cms_video есть две картинки cat_id = 1052, 1053
Вот мне и надо вывести эти картинки в категории id=1049
Отредактированно ureech (24.04.2014 01:14:50)
Неактивен
SELECT * FROM `cms_video` WHERE `cat_id` IN ( SELECT `id` FROM `cms_video_category` WHERE `parent_id` = 1049 );
Похоже на правду?
Неактивен
Да, на правду похоже, но `parent_id` = 1049 не пойдёт. Нужна динамика. Пользователь будет создавать категории и т.п.
Неактивен
Ну конечно вместо 1049 подставляется значение, пришедшее извне.
Изначально стояло
WHERE c1.seolink = '".$link."'
ну и измените нужным образом.
Неактивен
Нет, не хочет работать с $link. С parent_id работает. А с $link вообще ничего не выводит. Сама переменная рабочая. Она работает на этой же странице в другом запросе.
Неактивен
Распечатайте переменную $link, сам запрос и приведите сюда.
Неактивен
Хотя нет, где то что то я видно накосячил с кодом. Пойду ошибку искать. Отпишусь.
Неактивен
В общем такая ситуация. Переменная в порядке. Смотрю запросы на странице, вот он
SELECT * FROM `cms_video` WHERE `cat_id` IN ( SELECT `id` FROM `cms_video_category` WHERE seolink = 'muzyka' );
Но ничего не выводит. А если я добавляю в саму категорию картинку, то print_r() выводит массив этой картинки. Хотя не должен.
Хотя нет должен. Всё верно. Посмотрите на запрос. cat_id = id где $link = ... Главного то нет. Где parent_id вообще?
Неактивен
Bcё, решил,слава Богу и вашему вниманию. Спасибо за быстрый отклик.
$sql = "SELECT * FROM cms_video v1
WHERE v1.cat_id IN
( SELECT c1.id
FROM cms_video_category AS c1
LEFT JOIN cms_video_category AS c2
ON c2.id = c1.parent_id
WHERE c2.seolink = '".$link."' );
";
так работает.
Неактивен
Это снова я. Помогите ещё разок. Теперь мне не сосчитать картинки. Сейчас у меня получается два запроса. Один выводит из подкатегорий, а другой из категории, (если нет подката). Когда не было подкатегорий общее кол-во, для пагинации, $total, считалось исходя из cat_id (1049 которая),
$sql = "SELECT * FROM cms_video WHERE cat_id =".$id; Где $id = $cat['id']
из
такой ф-ции : $cat = $inDB->get_fields('cms_video_category', 'seolink = "'.$link.'"', '*');
Т.е это запрос на вывод всех данных из самой
"чистой" категории, а сейчас у меня в этой переменной "не пойми что", id = parent_id, а точнее
( SELECT c1.id
FROM cms_video_category AS c1
LEFT JOIN cms_video_category AS c2
ON c2.id = c1.parent_id
WHERE c2.seolink = '".$link."' );
Т.е. мне как бы следует вставить это в ф-цию вместо 'seolink = "'.$link.'"', т.к. это и есть WHERE. В общем не знаю как посчитать. Возможно ли как то записать эту конструкцию в переменную и потом её использовать в ф-ции вместо $where. Других идей нет.
Неактивен
Ещё суть в том, что в принципе у меня есть все данные для подсчёта в осносном запросе, но там выводится массив такого вида
Array ( [0] => Array ( [id] => 100 [seodes] => [album_id] => 1052, а нужен наверное такого Array ( [id] => 100 [seodes] => [album_id] =>
И я не могу из него достать [xxx], а если сделаю пересчёт, то выводит только одну строку с базы, или первую или последнею.
Неактивен