Dana
|
|
« Ответ #120 : 25-11-2010 10:02 » |
|
Dana, а вот скажи... если здесь использовать левое соединение таблиц, то - это будет плохо или хорошо, и почему?
попробовала использовать левое соединение-ничего не изменилось, но это наверно потому что у меня нет NULL если бы было, то если использовать левый джоин то выведутся все зачения(вместе с нулл), т е не будет учтена правая таблица.
|
|
« Последнее редактирование: 25-11-2010 10:08 от Dana »
|
Записан
|
Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
|
|
|
Sla
|
|
« Ответ #121 : 25-11-2010 10:32 » |
|
а вот если сделать такой запрос
Вывести всех клиентов, которые не делали платежей с ... по ...
Как ты построишь запрос?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #123 : 25-11-2010 11:14 » |
|
скажи, теперь ты почувствовала хоть какую-то разницу?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #125 : 25-11-2010 11:50 » |
|
Dana, не угадала
Ведь у тебя в таблице платежей нет нулевых сумм
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #128 : 25-11-2010 15:48 » |
|
Dana, не угадала
Ведь у тебя в таблице платежей нет нулевых сумм
есть только "-", когда я сформировала запрос вышеупомянутый он мне выдал всех с "-" Непонятно, откуда взялся "-" вот что оракл возвращает: C_FIRST_NAME C_SECOND_NAME C_LAST_NAME D_PAY N_SUM Айгуль Фармутовна Гайфуллина - - Айна Телеухановна Аскарова - - Александр Александрович Малев - - Александр Николаевич Катаев - - Александр Владимирович Новосельцев - - Александр Викторович Герасимов - - Александр Станиславович Иванов - - Александр Федорович Бурдастых - - Александр Сергеевич Попов - - Александр Иванович Шлегель - - __________________________
|
|
|
Записан
|
Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
|
|
|
Sla
|
|
« Ответ #129 : 25-11-2010 15:56 » |
|
Dana, каким запросом?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #131 : 29-11-2010 09:10 » |
|
Dana, а у вас еще небыло такой темы как план выполнения запроса? А будет, если небыло?
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #134 : 02-12-2010 12:28 » |
|
С left JOIN мне препод сказал лучше не связываться
Не понял этого. Связиваться с ними или нет, это как-то не корректно, для меня это звучит так, что типа если можно обойтись без них то лучше обойтись, так как они глючные! Использовать соединения или нет зависит от требуемого результата. У тебя попрежнему не верный синтаксис, на логику не проверяю. Кстате у препода такая апатия только к левому соединению или еще к какому то? Потому как ты все равно используешь соединения!
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
|
RXL
|
|
« Ответ #136 : 06-12-2010 11:44 » |
|
Макс, не понятно. по ссылке слишком много всего.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
McZim
|
|
« Ответ #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
|
|
« Ответ #138 : 06-12-2010 13:00 » |
|
Надо обновиться. 10.2.0.5, оказывается, пол года как появился. За последние пол года никаких проблем не испытывал, но патч накачу.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #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
|
|
« Ответ #144 : 07-12-2010 08:59 » |
|
с "OR" тоже не вариант. ((
Почему?
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #146 : 07-12-2010 10:45 » |
|
покажи запрос с OR
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Dana
|
|
« Ответ #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
|
|
« Ответ #148 : 07-12-2010 11:05 » |
|
Dana, а сама не видишь где проблема? Посмотри внимательно, комментируя каждый шаг!
|
|
|
Записан
|
The CBO without stats is like a morning without coffee. (c) T.Kyte.
|
|
|
Dana
|
|
« Ответ #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' // на начало какого периода выводить долг
|
|
|
Записан
|
Прославься в городе - возбудишь озлобленье, а домоседом стань - возбудишь подозренье. Не лучше ли тебе, хотя б ты Хызром был, ни с кем не знаться, жить всегда в уединенье?
|
|
|
|