Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить простой запрос, SELECT 
V
    Опции темы
Antony41
Дата 24.6.2013, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Есть таблица GROUPS, с полями GROUPS.ID, GROUPS.TITLE
И есть таблица TEL_LST, с полями TEL_LST.GROUP_ID, .....

Нужно составить запрос чтобы запись таблицы TEL_LST соответствовало группе 
Код

(WHERE TEL_LST.GROUP_ID = GROUPS.ID)
.
Но кроме этого если у записи TEL_LST.GROUP_ID не существует связанной группы то запись всё равно должна отобразиться что то типа 
Код

OR (WHERE (TEL_LST.GROUP_ID = GROUPS.ID) is NULL)
 как то так но не пойму как составить...
PM MAIL   Вверх
Akina
Дата 24.6.2013, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Читайте справку по LEFT JOIN


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antony41
Дата 24.6.2013, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



спасибо большое за помощь, разобрался, все получилось, но теперь хотелось бы еще дополнить кое чем допустим если связанной группы для записи не существует, то в поле вместо Groups.title результатом была строка не NULL, а "общая группа"

Код

select TEL_LST.ID, TEL_LST.GROUP_ID, TEL_LST.FIO, TEL_LST.EMAIL, TEL_LST.ADRESS, TEL_LST.PHONE, TEL_LST.SUBINFO, GROUPS.ID, GROUPS.TITLE 
FROM TEL_LST LEFT JOIN GROUPS ON TEL_LST.GROUP_ID = GROUPS.ID


если использовать IIF? то в каком месте?

Это сообщение отредактировал(а) Antony41 - 24.6.2013, 13:45
PM MAIL   Вверх
Akina
Дата 24.6.2013, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Читайте справку по COALESCE()


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antony41
Дата 24.6.2013, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



Не пойму в каком месте в sql запросе её использовать(
PM MAIL   Вверх
Akina
Дата 24.6.2013, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 3
Всего: 453



Код

SELECT ... , COALESCE(Groups.title, 'общая группа') AS title, ...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Antony41
Дата 24.6.2013, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



что то не получается одна запись для 1 записи у меня по факту задан GROUP_ID для которой группы не существует
выполняю запрос и в поле TITLE пустая строка, т.е все равно запись попадает в группу NULL

Код

select TEL_LST.ID, TEL_LST.GROUP_ID, TEL_LST.FIO, TEL_LST.EMAIL, TEL_LST.ADRESS, TEL_LST.PHONE, TEL_LST.SUBINFO, GROUPS.TITLE, 
COALESCE(GROUPS.TITLE, 'NOT GROUP') AS TITLE FROM TEL_LST LEFT JOIN GROUPS ON TEL_LST.GROUP_ID = GROUPS.ID


Это сообщение отредактировал(а) Antony41 - 24.6.2013, 15:31
PM MAIL   Вверх
Antony41
Дата 24.6.2013, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



user posted image

Это сообщение отредактировал(а) Antony41 - 24.6.2013, 15:41
PM MAIL   Вверх
Antony41
Дата 24.6.2013, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 27.12.2008

Репутация: нет
Всего: 1



тут не много не так тут получается TITLE у GROUPS существует везде а GROUPS.ID = TEL_LST.GROUP_ID существует не всегда, а именно не существует группы с таким ID который указан в записи TEL_LST.GROUP_ID.

Добавлено через 8 минут и 15 секунд
Блин приношу свои извинения за невнимательность предыдущий запрос был не верный вот верный всё заработало
Код

select TEL_LST.ID, TEL_LST.GROUP_ID, TEL_LST.FIO, TEL_LST.EMAIL, TEL_LST.ADRESS, TEL_LST.PHONE, TEL_LST.SUBINFO, COALESCE(GROUPS.TITLE, 
'NOT GROUP') AS TITLE FROM TEL_LST LEFT JOIN GROUPS ON TEL_LST.GROUP_ID = GROUPS.ID


Еще раз огромное спасибо за помощь!

Добавлено через 8 минут и 38 секунд
дай бог здоровья Вам! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.1286 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.