[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ошибка в запросе
diman0407
имеется запрос
(SELECT brand_id,brand_name FROM brands
WHERE brand_id=
(
SELECT parent_id FROM brands WHERE brand_id=$category)
)

UNION
(SELECT brand_id,brand_name FROM brands WHERE brand_id=$category)

в phpmyadmin запрос работает, при работе из скрипта выдает ошибку: The used SELECT statements have a different number of columns
в чем ошибка? Заранее спасибо!
kaww
Цитата (diman0407 @ 25.08.2015 - 07:53)
в чем ошибка?

Ты сам и написал ответ
Цитата (diman0407 @ 25.08.2015 - 07:53)
The used SELECT statements have a different number of columns

Т.е. запросы, которые в UNION, должны возвращать одинаковое количество полей.

Для чего вообще такой запрос? Его можно заменить на
SELECT brand_id,brand_name FROM brands WHERE brand_id=$category
diman0407
Спасибо за ответ, ошибку я понимаю, но не знаю как ее исправить, задумка следующая: для каждого brand_id задается parent_id, если parent_id=0 то это родительская категория, если нет, то подкатегория, соответсвенно если запрос был в подкатегорию, то в результате хочу видеть id и name подкатегории и категории, если запрос в категорию, то id и name категории.
kaww
diman0407, тогда как-то так:
select 
t1.brand_id as brand_id,
t1.brand_name as brand_name ,
t2.brand_id as parent_brand_id,
t2.brand_name as parent_brand_name
from brands as t1
left join brands as t2 on t1.parent_id=t2.brand_id
where t1.brand_id=$category
diman0407
не совсем то, что я хотел, хотелось бы чтобы выгрузилось 2 строки
1. id, name родительской категории
2. id, name подкатегории
если parent_id=0
1. id, name родительской категории
в самоучитиле попова это запрос работает)))
diman0407
таблица имеет 3 поля:
-brand_id (тип:tinyint(3), атрибуты:unsigned, auto_increment)
-brand_name (тип:varchar(255), utf8_general_ci)
parent_id (тип:tinyint(3), атрибуты:unsigned, по умолчанию: 0)
на основании данной таблицы сделан каталог товаров (если parent_id=0, то категория самостоятельная и не имеет подкатегории) если категория имеет родителя, то в parent_id указывается brand_id для родительской категории.
в результате работы данной функции должен появиться массив, из которого берутся данные (наименование категории и подкатегории) для хлебных крошек

и самое главное: почему запрос выполняется в phpmyadmin и выдает ошибку из php?
123456
(SELECT * FROM brands
WHERE brand_id=
(
SELECT parent_id FROM brands WHERE brand_id=$category)
)

UNION
(SELECT * FROM brands WHERE brand_id=$category)
123456
тебе kaww скинул рабочий вариант! Чем он тебя не устраивает?
diman0407
Цитата (123456 @ 25.08.2015 - 18:36)
(SELECT * FROM brands
WHERE brand_id=
(
SELECT parent_id FROM brands WHERE brand_id=$category)
)

UNION
(SELECT * FROM brands WHERE brand_id=$category)

Спасибо, за то что откликнулись, Ваш код выдает ошибку: The used SELECT statements have a different number of columns
123456
Цитата
тебе kaww скинул рабочий вариант! Чем он тебя не устраивает?

diman0407
хочется получить на выходе массив, первой строкой в котором будет id и name родителя а во второй id и name подкатегории. Вариант kaww выдает все одной строкой. я новичок в этом деле, присутствует так сказать спортивный интерес, хочу разобраться почему запрос работает в phpmyadmin и на другом сайте данная функция не вызывает ошибку
123456
У тебя рабочий запрос! Может ошибку возвращает вообще не этот запрос?
Razzwan
Цитата (123456 @ 25.08.2015 - 18:55)
У тебя рабочий запрос! Может ошибку возвращает вообще не этот запрос?
Это как раз объясняет, почему в одном месте этот запрос работает, а в другом - нет.


_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
diman0407
Уважаемые форумчане, прощу прощения за отнятое время, ошибка была действительно не в запросе. Хочу сказать всем спасибо за то что откликнулись и помогли!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.