Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 12:45   #1
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию Двойное обращение к полю

Доброго времени суток

Возникла вопрос в SQL
есть таблица с такими полями
Цитата:
category

id - идентификатор
id_paretn - id родителя
name - значение поля

значения

1 0 Имя Категори
2 0 Имя Категори2
........
11 1 Имя Под категории
12 1 Имя Под категории2
Ситуация такая из одно таблицы достаю значения cat и subcat которые равноценны id и id_parent необходимо из category достать значение name которое одновременно содержит название категории и подкатегории.

вот моя попытка
Код:
SELECT notice.id as 'id', notice.title as 't', category.name as 'cat', 
				  cat1.name as 'subcat', notice.info as 'info' 
						FROM notice,category,category as cat1 
						WHERE notice.cat = category.id
						AND notice.subcat = cat1.id
							ORDER BY notice.id DESC
результат только две записи из 5

вот значения таблицы notice
Цитата:
cat subcat
1 11
1 14
1 11
1 15
1 15
X@OC вне форума Ответить с цитированием
Старый 24.06.2012, 14:20   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В принципе 2 записи и должно вернуть - нет в Category записей с id_paretn с 14 и 15.
А сам запрос нужно подправить
Код:
SELECT notice.id as 'id', notice.title as 't', category.name as 'cat', 
    cat1.name as 'subcat', notice.info as 'info' 
  FROM notice,category,category as cat1 
  WHERE notice.cat = category.id AND
      notice.subcat = cat1.id AND
      cat1.id_paretn=category.id
  ORDER BY notice.id DESC
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.06.2012, 14:33   #3
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию

спасибо за ответ, но в таблице есть 1 до 1653
т.е. 14,15 в таблице присудствуют,
и дело в том что выводит последние две записи и в одно из них 14 присудствует.
если ли возможность вывести все записи!

Последний раз редактировалось X@OC; 24.06.2012 в 14:35.
X@OC вне форума Ответить с цитированием
Старый 24.06.2012, 14:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если выводить все записи не зависимо от наличия в category нужен LEFT JOIN. Например так
Код:
SELECT notice.id as 'id', notice.title as 't', category.name as 'cat', 
    cat1.name as 'subcat', notice.info as 'info' 
  FROM notice
    LEFT JOIN category ON category.id=notice.cat
    LEFT JOIN category AS cat1 ON cat1.id=notice.subcat AND cat1.id_paretn=notice.cat
  ORDER BY notice.id DESC
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.06.2012, 14:46   #5
X@OC
Форумчанин
 
Аватар для X@OC
 
Регистрация: 18.06.2010
Сообщений: 273
По умолчанию

спасибо заработало

Последний раз редактировалось X@OC; 24.06.2012 в 14:48.
X@OC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обращение к определенному полю dbgrideh kate158 Общие вопросы Delphi 2 28.03.2012 10:20
Двойное условие tema654 Microsoft Office Access 5 30.10.2011 00:30
Двойное подчёркивание Nerr Компоненты Delphi 3 14.08.2011 00:28
Обращение к конкретному полю varyat Microsoft Office Access 4 01.03.2011 22:16
Обращение к BLOB полю Bayazet БД в Delphi 3 17.03.2009 15:52