Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2 3 4 ... 7   Вниз
  Печать  
Автор Тема: Выборка из одной таблицы в SQL  (Прочитано 177204 раз)
0 Пользователей и 11 Гостей смотрят эту тему.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« : 01-11-2010 08:19 » 

Добрый день! вопрос такой:
Надо сделать такие выборки:

1.   Вывести список лицевых счетов тех абонентов, у которых нет долга.
2.   Вывести список лицевых счетов абонентов, у которых за последний период израсходовано более 100м3 горячей и 200м3 холодной воды.
3.   Вывести список ФИО тех абонентов, у которых нет телефонов и не указано в каких городах они живут.
4.   Вывести список ФИО тех абонентов,  которые проживают в собственных домах (нет номеров квартир).
5.   Вывести абонентов мужского пола (использовать идентификатор пола равный 21), не имеющих телефонов

семантика:

Таблица CLIENT – данные об абонентах.
•   N_CLIENT – лицевой счет
•   C_FIRST_NAME – имя
•   C_SECOND_NAME – отчество
•   C_LAST_NAME – фамилия
•   N_SEX – идентификатор пола
•   N_CITY – идентификатор города или поселка
•   N_STREET – идентификатор улицы
•   C_HOUSE – номер дома и номер корпуса
•    N_FLAT – номер квартиры
•   N_PHONE – номер телефона

Таблица SEX – справочник пола
•   N_SEX – идентификатор пола
•   C_SEX – название пола

Таблица STREET – справочник улиц
•   N_STREET – идентификатор улицы
•   C_STREET – название улицы

Таблица CITY – справочник городов и поселков
•   N_CITY – идентификатор города или поселка
•   C_CITY – название города или поселка

Таблица PAYMENT – оплата абонента
•   N_CLIENT – лицевой счет абонента
•   D_PAY – дата оплаты
•   N_SUM – сумма оплаты
•   N_SIGN – признак(1 – оплата учтена при начислении, 0 – оплата не учтена)

Таблица COMPUTATION – начисления абонентов
•   N_COMPUTATION – идентификатор начисления
•   N_CLIENT – лицевой счет абонента
•   D_COMPUTATION – дата начисления
•   N_INFO_HOT – текущие показания счетчика горячей воды
•   N_INFO_COLD – текущие показания счетчика холодной воды
•   N_DIFFERENCE_HOT – разница текущих и предыдущих показаний счетчика горячей воды
•   N_DIFFERENCE_COLD – разница текущих и предыдущих показаний счетчика холодной воды
•   N_TARIFF – идентификатор тарифов на горячую и холодную воду
•   N_SUM_HOT – начисление за горячую воду за текущий период
•   N_SUM_HOT – начисление за холодную воду за текущий период
•   N_DEBT – долг на начало периода
•   N_PAY – оплата за предыдущий период
•   N_TOTAL – итоговая сумма на конец месяца

Таблица TARIFF – тарифы на горячую и холодную воду
•   N_TARIFF – идентификатор тарифов по холодной и горячей воде
•   D_TARIFF – дата смены тарифов на новые
•   N_TARIFF_HOT – тариф на горячую воду (в руб.)
•   N_TARIFF_COLD – тариф на холодную воду (в руб.)

Пишу вот это:
1. Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL
2. Select  N_CLIENT, N_INFO_HOT, N_INFO_COLD
FROM computation
WHERE  N_INFO_HOT>100 and N_INFO_COLD>200
3. Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY AND N_PHONE is NULL
4. Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_FLAT is NULL
5. Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME, N_PHONE
FROM client
WHERE  N_SEX = 21 AND N_PHONE IS NULL

Подскажите, правильно ли я мыслю?
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 01-11-2010 08:33 » 

1. Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL

N_SUM - долг
 в зависимости от наличия и логики
N_SUM = 0 или N_SUM is NULL - нет долга
N_SUM > 0  - у клиента есть предоплата, => нет долга


Добавлено через 3 минуты и 16 секунд:
3. Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY is null or N_PHONE is NULL
« Последнее редактирование: 01-11-2010 08:36 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #2 : 01-11-2010 09:09 » 

1.
Код:
Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL

Из описания таблицы не ясно, что за сумма оплаты, сумма которую нужно заплатить или уже заплатил?

2.
Код:
Select  N_CLIENT, N_INFO_HOT, N_INFO_COLD
FROM computation
WHERE  N_INFO_HOT>100 and N_INFO_COLD>200

Нужно вывести только лицевые счета, а ты выводишь еще и показания. Так же где указания последнего периода? При таком sql выведутся ВСЕ показания > 100  и > 200 за любой период.

3.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY AND N_PHONE is NULL

нужно добавить проверку на NULL и для первого поля тоже.

Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY is NULL AND N_PHONE is NULL

4.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_FLAT is NULL

Да.

5.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME, N_PHONE 
FROM client
WHERE  N_SEX = 21 AND N_PHONE IS NULL

Да.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #3 : 01-11-2010 09:55 » 

1.
Код:
Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL

Из описания таблицы не ясно, что за сумма оплаты, сумма которую нужно заплатить или уже заплатил?

2.
Код:
Select  N_CLIENT, N_INFO_HOT, N_INFO_COLD
FROM computation
WHERE  N_INFO_HOT>100 and N_INFO_COLD>200

Нужно вывести только лицевые счета, а ты выводишь еще и показания. Так же где указания последнего периода? При таком sql выведутся ВСЕ показания > 100  и > 200 за любой период.

3.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY AND N_PHONE is NULL

нужно добавить проверку на NULL и для первого поля тоже.

Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_CITY is NULL AND N_PHONE is NULL

4.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME
FROM client
WHERE  N_FLAT is NULL

Да.

5.
Код:
Select  C_LAST_NAME, C_FIRST_NAME, C_SECOND_NAME, N_PHONE 
FROM client
WHERE  N_SEX = 21 AND N_PHONE IS NULL

Да.

По заданию надо выявить лицевые счета у кого нет долга

1.
Select  N_CLIENT
FROM payment
WHERE  N_DEBT is NULL

или

Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL

Какой выбрать не знаю..до меня не доходит как-то как этот долг посчитать.

2. Я могу вывести только за текущий период как я понимаю
то есть будет выглядеть так:

Select  N_CLIENT
FROM computation
N_DIFFERENCE_HOT>100 and N_DIFFERENCE_COLD>200
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #4 : 01-11-2010 10:07 » 


По заданию надо выявить лицевые счета у кого нет долга

1.
Select  N_CLIENT
FROM payment
WHERE  N_DEBT is NULL

или

Select  N_CLIENT
FROM payment
WHERE  N_SUM is NULL

Какой выбрать не знаю..до меня не доходит как-то как этот долг посчитать.

2. Я могу вывести только за текущий период как я понимаю
то есть будет выглядеть так:

Select  N_CLIENT
FROM computation
N_DIFFERENCE_HOT>100 and N_DIFFERENCE_COLD>200


1. Вот я и говорю что не понятно что за поле N_SUM. Ты эти таблицы создавала? А вот поле N_DEBT в таблице payment, я вообще не нашел!

2. Если у тебя в данной таблице данные хранятся ВСЕГДА за текущий период, то да, иначе нужно указывать период!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #5 : 01-11-2010 11:19 » 

Создавал преподаватель, попробую у него еще спросить. Спасибо за помощь начинающим Да-да

Добавлено через 3 минуты и 51 секунду:

2. Я могу вывести только за текущий период как я понимаю
то есть будет выглядеть так:

Select  N_CLIENT
FROM computation
N_DIFFERENCE_HOT>100 and N_DIFFERENCE_COLD>200


Если так написать выходит надпись

no data found


« Последнее редактирование: 01-11-2010 11:23 от Dana » Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #6 : 01-11-2010 12:50 » 


Если так написать выходит надпись

no data found

а так что покажет?

Код:
select max(N_DIFFERENCE_HOT), max(N_DIFFERENCE_COLD)
FROM computation
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #7 : 02-11-2010 10:15 » 

MAX(N_DIFFERENCE_HOT) MAX(N_DIFFERENCE_COLD)
150                                           199
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #8 : 02-11-2010 10:27 » 

Dana, теперь ты поняла, почему у тебя твой запрос ничего не вернул?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #9 : 02-11-2010 10:34 » 

Dana, теперь ты поняла, почему у тебя твой запрос ничего не вернул?
ПОЛУЧАЕТСЯ РАЗНИЦА ПО ГОРЯЧЕЙ 150, ПО ХОЛОДНОЙ 199. а ПОЧЕМУ НЕ ВЕРНУЛ НЕ ПОНЯТНО Жаль
мНЕ ЖЕ И НАДО ЧТОБЫ ВЫВЕЛОСЬ БОЛЬШЕ 100 ПО ГОРЯЧЕЙ И БОЛЬШЕ 200 ПО ХОЛОДНОЙ
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #10 : 02-11-2010 10:36 » 

Dana, вот именно что "И" а не "ИЛИ". Если у тебя условия через "И" то строки будут возвращены только при выполнении обоих условий. А у тебя выполняется только одно. Замени "И" на "ИЛИ" и посмотри на результат.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #11 : 02-11-2010 10:47 » 

РЕЗУЛЬТАТ ЕСТЬ, ТОЛЬКО ВОТ В ЗАДАНИИ "И"

Добавлено через 5 минут и 53 секунды:
Такая же фигня и с этим заданием
1.   Вывести список улиц, название которых начинается на ОКТ.

SELECT   C_STREET
FROM street
WHERE C_STREET like ‘ОКТ%’
« Последнее редактирование: 02-11-2010 10:53 от Dana » Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #12 : 02-11-2010 11:03 » 

РЕЗУЛЬТАТ ЕСТЬ, ТОЛЬКО ВОТ В ЗАДАНИИ "И"

Ты же сама увидела что у тебя значение для холодной воды всего лишь = 199, а ты просишь найти > 200.

Код:
MAX(N_DIFFERENCE_HOT) MAX(N_DIFFERENCE_COLD) 
150                                           199

Добавлено через 7 минут и 7 секунд:
Dana, предлагаю переползти в чат.

навсякий, чат тут: https://forum.shelek.ru/channels/index.php

Добавлено через 9 минут и 44 секунды:
А в чате никого Улыбаюсь Ладно тогда тут. в общем запрос:

Код:
SELECT   C_STREET
FROM street
WHERE C_STREET like ‘ОКТ%’

должен тебе возвращать то что ты просишь, при условии что улицы именуются заглавными буквами, это так?
« Последнее редактирование: 02-11-2010 11:19 от McZim » Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #13 : 02-11-2010 11:55 » new

А в чате никого Улыбаюсь Ладно тогда тут. в общем запрос:

Код:
SELECT   C_STREET
FROM street
WHERE C_STREET like ‘ОКТ%’

должен тебе возвращать то что ты просишь, при условии что улицы именуются заглавными буквами, это так?
пишет вот что:
 ORA-00911: invalid character
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #14 : 02-11-2010 12:09 » 

Dana, ух ты, да у тебя еще и Oracle Улыбаюсь

Ну тогда держи:


Код:
create table test_street(c_street varchar2(256 char))

insert into test_street values('ОКТЯБРЬСКАЯ')
insert into test_street values('ШАБОЛОВСКАЯ')
insert into test_street values('ФРУНЗЕНСКАЯ')
insert into test_street values('ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ')


SQL> select c_street from TEST_STREET
  2  where C_STREET like 'ОКТ%';

C_STREET
--------------------------------------------------------------------------------
ОКТЯБРЬСКАЯ
ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ


Добавлено через 2 минуты и 10 секунд:
пишет вот что:
 ORA-00911: invalid character

Апострофы у тебя правильные? Если такие как здесь, то будет ошибка! Посмотри какие у меня, в посте выше.
« Последнее редактирование: 02-11-2010 12:11 от McZim » Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #15 : 03-11-2010 06:04 » 

McZim, точно.. все заработало Улыбаюсь

А наверно так же только '%АЯ'

А какой оператор использовать чтобы
вывести список улиц, название которых ЗАКАНЧИВАЕТСЯ на АЯ и вообще где можно почитать поподробнее про операторы и так далее, что посоветуешь?


Добавлено через 33 минуты и 27 секунд:
 Улыбаюсь
« Последнее редактирование: 03-11-2010 06:40 от Dana » Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 03-11-2010 08:21 » 

Dana, посмотри доку B14200-02 (SQL Reference). Рекомендую попробовать функцию REGEXP_LIKE.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #17 : 03-11-2010 09:03 » 

Dana, как я понял ты используешь оракл, тогда можешь почитать тут: http://www.oracle.com/pls/db112/homepage
RXL, я думаю для Даны, это пока не нужно, все же у нее тривиальные условия.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #18 : 09-11-2010 08:13 » 

Подскажите как это сделать. Ни одной идеи


1. Вывести список абонентов, проживающих в Троицке и Миассе (использовать идентификаторы городов)
2. Вывести список абонентов с улиц «Молодогвардейцев» и «Братьев Кашириных»
3. Вывести суммы оплат за январь и февраль, с 1 по 15 число.
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #19 : 09-11-2010 08:33 » 

1.
Код:
select * from CLIENT where N_CITY in (1,2)

* - перечисли нужные тебе поля.
1,2 - идентификаторы нужных городов.

2.
Код:
select * from CLIENT where N_STREET in
(select N_STREET from STREET where C_STREET like 'Молодогвардейцев'
and C_STREET like 'Братьев Кашириных')

* - перечисли нужные тебе поля.

3.
Код:
select N_SUM from PAYMENT where (D_PAY
between to_date('2010-01-01','YYYY-MM-DD') and to_date('2010-01-15','YYYY-MM-DD'))
or (D_PAY
between to_date('2010-02-01','YYYY-MM-DD') and to_date('2010-02-15','YYYY-MM-DD'))

to_date - если есть индекс, то он использоваться не будет.
 - нужно знать как хранятся даты у тебя, я привел для общего случая.


Все запросы, приведены для общих случаев, с ориентацией на твои таблицы. Их нужно оптимизировать под твою систему/схему. Если тебе для лабораторных, на небольшом объеме данных, то можно оставить все так.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #20 : 09-11-2010 08:48 » 

1. я как раз таки и не знаю идентификаторы нужных городов.
НАШЛА  Улыбаюсь
« Последнее редактирование: 09-11-2010 08:57 от Dana » Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #21 : 09-11-2010 08:50 » 

1. я как раз таки и не знаю идентификаторы нужных городов

выполни:
Код:
 select * from CITY 

результат сюда!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #22 : 09-11-2010 08:59 » 

1. я как раз таки и не знаю идентификаторы нужных городов

выполни:
Код:
 select * from CITY 

результат сюда!
а по твоей проще получилось искать чем по моей Улыбаюсь

Добавлено через 39 минут и 8 секунд:
2. Пишу, говорит не найдено. Эти улицы забиты под оазные идентификаторы значит надо сделать как-то проверку этих улиц

SELECT C_FIRST_NAME , C_SECOND_NAME , C_LAST_NAME
FROM CLIENT
WHERE N_STREET IN (SELECT N_STREET FROM STREET WHERE C_STREET LIKE 'БР%' AND C_STREET LIKE 'МОЛОДОГВАРДЕЙЦЕВ')
« Последнее редактирование: 09-11-2010 09:38 от Dana » Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #23 : 09-11-2010 09:49 » 

2. Пишу, говорит не найдено. Эти улицы забиты под оазные идентификаторы значит надо сделать как-то проверку этих улиц

SELECT C_FIRST_NAME , C_SECOND_NAME , C_LAST_NAME
FROM CLIENT
WHERE N_STREET IN (SELECT N_STREET FROM STREET WHERE C_STREET LIKE 'БР%' AND C_STREET LIKE 'МОЛОДОГВАРДЕЙЦЕВ')

извини, я напутал, вот так попробуй.

Код:
SELECT C_FIRST_NAME , C_SECOND_NAME , C_LAST_NAME 
FROM CLIENT
WHERE N_STREET IN (SELECT N_STREET FROM STREET WHERE C_STREET LIKE 'БР%' OR C_STREET LIKE 'МОЛОДОГВАРДЕЙЦЕВ')

А про разные идентификаторы я не понял. Попробуй для начала выполнить исправленный sql, дальше разберемся.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #24 : 09-11-2010 09:55 » 

а почему только OR срабатывает, OR это же либо то либо другое, а AND значит И то И другое
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #25 : 09-11-2010 09:58 » 

Dana, вот имено, если AND то N_STREET, должен иметь оба значения ОДНОВРЕМЕННО, это противоречит для твоих таблиц. У тебя N_STREET для каждой строки, может иметь только одно значение C_STREET, поэтому тут нужно использовать OR.
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 09-11-2010 09:59 » 

2. Вывести список абонентов с улиц «Молодогвардейцев» и «Братьев Кашириных»

Ну ты ж понимаешь что один и тот же абонент не может проживать на двух улицах (хотя, конечно может)

Поэтому задача двоякая

2. Вывести список Всех абонентов с улиц «Молодогвардейцев» и «Братьев Кашириных» (OR)
2. Вывести список абонентов, имеющих аккаунт на улицах «Молодогвардейцев» и «Братьев Кашириных» (AND)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dana
Опытный

ru
Offline Offline
Пол: Женский

« Ответ #27 : 09-11-2010 10:01 » 

НУ ДОПУСТИМ n_STREET
1 бр.кашириных
15 БР.кашириных
25 Братьев Кашириных
то есть идентификаторы на каждую улицу разные, а улицы по сути одинаковые. Как сделать чтобы все с одной улицы, но с разными идентификаторами попали в выводную форму.
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #28 : 09-11-2010 10:05 » 

n_street - преобразовать или к верхнему регистру или к нижнему а потом уже проверять на like с выбранным регистром



Добавлено через 1 минуту и 30 секунд:
1 бр.кашириных
15 БР.кашириных
25 Братьев Кашириных



тогда like '%БР%ШИРИНЫХ'
« Последнее редактирование: 09-11-2010 10:07 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #29 : 09-11-2010 10:15 » 

то есть идентификаторы на каждую улицу разные, а улицы по сути одинаковые. Как сделать чтобы все с одной улицы, но с разными идентификаторами попали в выводную форму.

Я так понимаю, этот вопрос возник потому что у тебя нет некоторых записей в таблице CLIENT имеющих идентификаторы из таблицы STREET для таких улиц как (бр.кашириных, БР.кашириных), я правильно понимаю?

Если так то тебе и ненужно выводить эти записи, так как нет заведенных клиентов проживающих на этих улицах.

Если это не так, то тебя не должно волновать какие идентификаторы у этих названий улиц, ты просто делаешь:

Код:
SELECT C_FIRST_NAME , C_SECOND_NAME , C_LAST_NAME 
FROM CLIENT
WHERE N_STREET IN (SELECT N_STREET FROM STREET WHERE upper(C_STREET) LIKE upper('бр%') OR upper(C_STREET) LIKE upper('мол%'))
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Страниц: [1] 2 3 4 ... 7   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines