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

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

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

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

Dana, а вот скажи... если здесь использовать левое соединение таблиц, то - это будет плохо или хорошо, и почему?
попробовала использовать левое соединение-ничего не изменилось, но это наверно потому что у меня нет NULL если бы было, то если использовать левый джоин то выведутся все зачения(вместе с нулл), т е не будет учтена правая таблица.
« Последнее редактирование: 25-11-2010 10:08 от Dana » Записан

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

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

WWW
« Ответ #121 : 25-11-2010 10:32 » 

а вот если сделать такой запрос

Вывести всех клиентов, которые не делали платежей с ... по ...

Как ты построишь запрос?
Записан

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

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

« Ответ #122 : 25-11-2010 11:00 » 

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, d_pay, n_sum
FROM
client,payment
WHERE

n_sum=NULL and d_pay between to_date('05.04.08','DD.MM.YY')and to_date('30.08.08','DD.MM.YY')


Добавлено через 11 минут и 29 секунд:
Лучше использовать Лефт джоин, тогда записи выходят с NULL
Код:
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, d_pay, n_sum
FROM client Left JOIN payment ON client.n_client = payment.n_client and
d_pay between to_date('05.04.08','DD.MM.YY')and to_date('30.08.08','DD.MM.YY')
« Последнее редактирование: 25-11-2010 11:12 от Dana » Записан

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

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

WWW
« Ответ #123 : 25-11-2010 11:14 » 

скажи, теперь ты почувствовала хоть какую-то разницу?
Записан

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

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

« Ответ #124 : 25-11-2010 11:20 » 

скажи, теперь ты почувствовала хоть какую-то разницу?
Разница большая Улыбаюсь
Теперь думаю как вывести тех кто не платил
ВО:
Код:
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, d_pay, n_sum
FROM client left JOIN payment ON client.n_client = payment.n_client and
d_pay between to_date('05.04.08','DD.MM.YY')and to_date('30.08.08','DD.MM.YY')
and n_sum=0
ORDER BY C_FIRST_NAME asc
Записан

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

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

WWW
« Ответ #125 : 25-11-2010 11:50 » 

Dana, не угадала

Ведь у тебя в таблице платежей нет нулевых сумм
Записан

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

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

« Ответ #126 : 25-11-2010 12:04 » 

Dana, не угадала

Ведь у тебя в таблице платежей нет нулевых сумм
есть только "-",
 когда я сформировала запрос вышеупомянутый он мне выдал всех с "-"

Добавлено через 1 минуту и 9 секунд:
4.   Вывести список клиентов, проживающих в Челябинске и не имеющих долгов по оплате за сентябрь 2008 года.

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, n_city, n_debt
FROM client left JOIN computation ON client.n_client = computation.n_client
 а как подвязать сентябрь не знаю, подзапрос использовать?
« Последнее редактирование: 25-11-2010 12:05 от Dana » Записан

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

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

WWW
« Ответ #127 : 25-11-2010 12:20 » 

а каие есть функции работы с датой?

SELECT SYSDATE d1, TRUNC(SYSDATE,'HH24') d2,  TRUNC(SYSDATE, 'DD') d3,  TRUNC(SYSDATE, 'MM') d4, TRUNC(SYSDATE,  'YYYY')
d5
FROM dual;


SELECT SYSDATE d1, LAST_DAY(SYSDATE) d1
FROM dual

А может есть еще какие-нибудь?

Добавлено через 37 секунд:
Dana, не угадала

Ведь у тебя в таблице платежей нет нулевых сумм
есть только "-",
 когда я сформировала запрос вышеупомянутый он мне выдал всех с "-"
Непонятно, откуда взялся "-"
« Последнее редактирование: 25-11-2010 12:21 от Sla » Записан

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

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

« Ответ #128 : 25-11-2010 15:48 » 

Dana, не угадала

Ведь у тебя в таблице платежей нет нулевых сумм
есть только "-",
 когда я сформировала запрос вышеупомянутый он мне выдал всех с "-"
Непонятно, откуда взялся "-"

вот что оракл возвращает:

C_FIRST_NAME C_SECOND_NAME C_LAST_NAME D_PAY N_SUM
Айгуль Фармутовна Гайфуллина -  - 
Айна Телеухановна Аскарова -  - 
Александр Александрович Малев -  - 
Александр Николаевич Катаев -  - 
Александр Владимирович Новосельцев -  - 
Александр Викторович Герасимов -  - 
Александр Станиславович Иванов -  - 
Александр Федорович Бурдастых -  - 
Александр Сергеевич Попов -  - 
Александр Иванович Шлегель -  - 
__________________________
Записан

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

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

WWW
« Ответ #129 : 25-11-2010 15:56 » 

Dana, каким запросом?
Записан

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

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

« Ответ #130 : 25-11-2010 16:31 » 

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, d_pay, n_sum
FROM client left JOIN payment ON client.n_client = payment.n_client and
d_pay between to_date('05.04.08','DD.MM.YY')and to_date('30.08.08','DD.MM.YY')
and n_sum=0
ORDER BY C_FIRST_NAME asc

Добавлено через 13 часов, 42 минуты и 41 секунду:
 Не надо

Добавлено через 3 дня, 2 часа, 34 минуты и 11 секунд:
Для 4
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, n_city, n_debt
FROM client left JOIN computation ON client.n_client = computation.n_client
and to_char(d_computation,'MM') = '09'
and n_debt <= 0
осталось как-то город подвязать
« Последнее редактирование: 29-11-2010 08:48 от Dana » Записан

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

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


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

Dana, а у вас еще небыло такой темы как план выполнения запроса? А будет, если небыло?
Записан

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

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

« Ответ #132 : 30-11-2010 07:49 » 

Не было к сожалению

Добавлено через 1 день, 18 часов, 52 минуты и 41 секунду:
С  left JOIN мне препод сказал лучше не связываться в этом примере. Как мне его тогда сделать?

Добавлено через 9 часов, 32 минуты и 51 секунду:
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt <=0
and n_city (select city.c_city
from city
where upper (c_city) like upper ('%челяб%'))
and to_char(d_computation,'MM')='10'
« Последнее редактирование: 02-12-2010 12:14 от Dana » Записан

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

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

WWW
« Ответ #133 : 02-12-2010 12:22 » 

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt <=0
and n_city (select city.c_city
from city
where upper (c_city) like upper ('%челяб%'))
and to_char(d_computation,'MM')='10'
Ты хоть поняла что ты написала?

Описываешь задачу - пишешь решение, и нам так легче и тебе.
Записан

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

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


WWW
« Ответ #134 : 02-12-2010 12:28 » 

С  left JOIN мне препод сказал лучше не связываться

Не понял этого. Связиваться с ними или нет, это как-то не корректно, для меня это звучит так, что типа если можно обойтись без них то лучше обойтись, так как они глючные!

Использовать соединения или нет зависит от требуемого результата.

У тебя попрежнему не верный синтаксис, на логику не проверяю.

Кстате у препода такая апатия только к левому соединению или еще к какому то? Потому как ты все равно используешь соединения!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
McZim
Команда клуба

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


WWW
« Ответ #135 : 06-12-2010 10:09 » 

Да, совсем забыл, для будущего поколения.

Начиная с версии 9i, когда появились ANSI соедиения в Oracle. Постоянно присутствуют проблемы с этими соединениями, вплоть да настоящего времени Oracle 11gR2. Это пролема НЕ стандарта, а реализации в Oracle.

http://www.sql.ru/forum/actualsearch.aspx?search=10+join+%E1%E0%E3&sin=0&a=&ma=0&bid=3&dt=-1&s=1&so=1
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

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

WWW
« Ответ #136 : 06-12-2010 11:44 » 

Макс, не понятно. по ссылке слишком много всего.
Записан

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

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


WWW
« Ответ #137 : 06-12-2010 11:51 » 

RXL, Общая идея в том, что при использовании ANSI JOIN, в Oracle, всплывают от версии к версии разные баги и архитектурные прелести. Ошибки вывода данных, невозможность применять хинты, невминяемые планы выполнения запроса и всякое такое разное.

Ходят даже слухи, что Oracle это специально делает, дабы оправдать тех. поддержку Улыбаюсь

В последних версиях 10-ки 11-ой уже многое из этих проблем пофиксили. Для десятки это: 10.2.0.5.0, для одиннадчатой это: 11.2.0.2.0
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
RXL
Технический
Администратор

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

WWW
« Ответ #138 : 06-12-2010 13:00 » 

Надо обновиться. 10.2.0.5, оказывается, пол года как появился. За последние пол года никаких проблем не испытывал, но патч накачу.
Записан

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

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

« Ответ #139 : 07-12-2010 04:17 » 

Задача:
4.   Вывести список клиентов, проживающих в Челябинске и не имеющих долгов по оплате за сентябрь 2008 года.
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt <=0
and n_city=50 and n_city=55 and n_city=61
and to_char(d_computation,'MM')='10'
50,55,60 - это значит город Челябинск
Записан

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

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

« Ответ #140 : 07-12-2010 05:22 » 

5.   Найти всех абонентов г. Троицка вывести последнею сумму долга, с указанием адреса и фамилии
select client.C_FIRST_NAME, client.C_SECOND_NAME, client.C_LAST_NAME,client.N_STREET,client.C_HOUSE,client.N_FLAT,client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt >0
and client.n_city=48
and client.n_city=69
Записан

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

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

WWW
« Ответ #141 : 07-12-2010 07:24 » 

Задача:
4.   Вывести список клиентов, проживающих в Челябинске и не имеющих долгов по оплате за сентябрь 2008 года.
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt <=0
and n_city=50 and n_city=55 and n_city=61
and to_char(d_computation,'MM')='10'
50,55,60 - это значит город Челябинск

and n_city=50 and n_city=55 and n_city=61

Не правильно ты, дядя Федор бутерброд кушаешь  (с)
Записан

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

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

WWW
« Ответ #142 : 07-12-2010 07:25 » 

5.   Найти всех абонентов г. Троицка вывести последнею сумму долга, с указанием адреса и фамилии
select client.C_FIRST_NAME, client.C_SECOND_NAME, client.C_LAST_NAME,client.N_STREET,client.C_HOUSE,client.N_FLAT,client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt >0

and client.n_city=48
and client.n_city=69


Переписывай запрос
Записан

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

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

« Ответ #143 : 07-12-2010 08:49 » 

Задача:
4.   Вывести список клиентов, проживающих в Челябинске и не имеющих долгов по оплате за сентябрь 2008 года.
select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation
where client.n_client=computation.n_client
and n_debt <=0
and n_city=50 and n_city=55 and n_city=61
and to_char(d_computation,'MM')='10'
50,55,60 - это значит город Челябинск

and n_city=50 and n_city=55 and n_city=61

Не правильно ты, дядя Федор бутерброд кушаешь  (с)
с "OR" тоже не вариант. ((
Записан

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

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

WWW
« Ответ #144 : 07-12-2010 08:59 » new

с "OR" тоже не вариант. ((


Почему?
Записан

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

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

« Ответ #145 : 07-12-2010 09:56 » 

OR – оператор, который отображает только те записи, когда хотя бы одно из  условий является правдой
У меня тогда выводится на экран фигня полная
"C_FIRST_NAME C_SECOND_NAME C_LAST_NAME N_CITY N_DEBT
Мария Витальевна Погорелова 55 -3  - долга нет
Мария Витальевна Погорелова 55 561   -долг есть
Мария Витальевна Погорелова 55 904   -долг есть
Мария Витальевна Погорелова 55 260
Мария Витальевна Погорелова 55 570 "
ну и так далее
Записан

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

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

WWW
« Ответ #146 : 07-12-2010 10:45 » 

покажи запрос с OR
Записан

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

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

« Ответ #147 : 07-12-2010 10:55 » 

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt
From client, computation, city
where client.n_client=computation.n_client
and client.n_city=city.n_city  -переделала
and n_debt>0  - переделала
and n_city=50 or n_city=55 and n_city=61
and to_char(d_computation,'MM')='10'

по этому запросу мой оракл почему-то ничего не делает в браузере только внизу написано "ошибка на странице"
Записан

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

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


WWW
« Ответ #148 : 07-12-2010 11:05 » 

Dana, а сама не видишь где проблема? Посмотри внимательно, комментируя каждый шаг!
Записан

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

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

« Ответ #149 : 07-12-2010 11:42 » 

select C_FIRST_NAME, C_SECOND_NAME, C_LAST_NAME, client.n_city,computation.n_debt // что выведется:имя,отчество,фамилия,идентиф. города, долг на начало окт
From client, computation, city //использовать таблицы клиент, компут., города
where client.n_client=computation.n_client //объединяем идент.клиента в табл. клиента равен идент. клиента в табл. компут.
and client.n_city=city.n_city // объедин. идент. города в табл. клиент и идент. города в табл. сити
and n_debt>0 // долг больше нуля
and n_city=50 or n_city=55 and n_city=61 //выбрать идент. 50 или 55 и 61
and to_char(d_computation,'MM')='10' // на начало какого периода выводить долг
Записан

Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
Страниц: 1 2 3 4 [5] 6 7   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines