2013-04-12 4 views
0

Я пытаюсь запустить несколько SQL-запросов, все они полагаются друг на друга.Несколько SQL-запросов, которые полагаются друг на друга

Что у меня сейчас не работает, поэтому я покажу, что у меня есть сейчас, и я объясню, что нужно делать.

SET @sub_cat_id = SELECT MAX(category_id) FROM exp_br_product_category WHERE product_id = '1234'; 
SET @prim_cat_id = SELECT parent_id FROM exp_br_category WHERE category_id = @sub_cat_id; 
SET @prim_cat_title = SELECT url_title FROM exp_br_category WHERE category_id = @prim_cat_id; 
SET @sub_cat_title = SELECT url_title FROM exp_br_category WHERE category_id = @sub_cat_id; 
$title1 = SELECT @prim_cat_title; 
$title2 = SELECT @sub_cat_title; 

Предполагаемый вывод должен состоять в том, что $ title1 = maincat и $ title2 = subcat. Таким образом, мы можем построить URL-адрес из этих двух конечных переменных.

Я исследовал stackoverflow, но я не могу найти ничего, что близко к тому, что я делаю. Может кто-нибудь, пожалуйста, помогите мне обработать запрос, который будет работать правильно?

Заранее благодарим за вашу помощь!

EDIT

две таблицы exp_br_product_category, которая хранит информацию о продуктах и ​​их соответствующих категорий и exp_br_category, которая хранит всю информацию о категории с сайта (в том числе родительский идентификатор категории и URL заглавие).

+0

Что означает «не работает»? Вы получили сообщение об ошибке? Вы получаете неправильные значения? –

+0

@ MikeSherrill'Catcall 'Страница выдает 500 ошибок. – michaelrmcneill

+3

узнать о присоединениях http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – xQbert

ответ

1

Это может быть лучшим способом для извлечения данных пути объединения в запросе, то есть соединения нескольких таблиц в одном запросе:

SELECT 
    prim_cat.url_title as prim_cat_title, sub_cat.url_title as sub_cat_title 
FROM 
    exp_br_product_category prod_cat, 
    exp_br_category prim_cat, 
    exp_br_category sub_cat 
WHERE 
    prod_cat.product_id = 1234 and 
    prod_cat.category_id = sub_cat.category_id and 
    prim_cat.category_id = sub_cat.parent_id 
ORDER BY 
    prod_cat.category_id desc 
LIMIT 1 

(вместо того, чтобы использовать максимум() агрегатную функцию I 've заказал результаты в порядке убывания и ограничил запрос одним результатом, который должен получить тот же результат.)

Возможно, вы можете прочитать что-нибудь о соединениях here или here.

Однако, независимо от того, как формируются запросы, это не должно быть причиной ошибки 500. Скорее всего, это ошибка конфигурации веб-сервера, возможно, ошибка в вашем файле .htaccess или, что менее вероятно, с конкретной конфигурацией PHP и веб-сервера, просто синтаксическая ошибка в вашем файле PHP.

+0

Спасибо за это @pilsetnieks. Я читаю о присоединениях, но быстрый вопрос: как мне теперь объявить переменную PHP из того, что возвращается из этого? – michaelrmcneill

+0

Вы не можете писать SQL непосредственно в PHP-коде, вам нужно как-то выполнить код SQL и получить значения. Возможно, вам стоит начать с чего-то вроде этого: http://www.databasejournal.com/features/mysql/article.php/3599166/Connecting-and-prepared-statements-with-the-mysqli-extension.htm – pilsetnieks

Смежные вопросы