Как правильно организовать Select

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

Ответить
Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Как правильно организовать Select

Сообщение Vetal » 04 сен 2006, 16:26

Здраствуйте, если не трудно подскажите в сл.вопросе. Для примера есть таблица с двумя полями, нужно сделать select который выбрал бы по первому полю все записи а по второму полю только записи по нужному условию, только одним селектом. Меня на этом замкнуло ниче в голову кроме двух селектов не приходит....

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 сен 2006, 17:00

Table1 t1 JOIN Table1 t2

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 04 сен 2006, 17:06

LEFT ;)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 сен 2006, 17:10

ну да. алиасы таблиц и www.ibase.ru/devinfo/joins.htm

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 сен 2006, 17:36

Merlin писал(а):LEFT ;)
Я уж грешным делом решил, что если ему действительно "не хватает идеи", то сам догадается, что левый нужон.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 сен 2006, 17:38

и ещё. пользуйся алиасами.

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 17:39

WildSery писал(а):и ещё. пользуйся алиасами.

Код: Выделить всё

select
    viewdate.fdate,
    sum(viewdate.bytesoutput),
    0 
from
    viewdate
    left join viewdate on viewdate.namelog='HTTP.log'
group by
    viewdate.fdate 
IBExpert просто вешаеться...

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 сен 2006, 17:41

Ты начинаешь издеваться.
перепиши в таком виде:

Код: Выделить всё

... from viewdate v1 left join viewdate v2 ...
и условие соединения не viewdate.namelog='HTTP.log', кстати, непонятно к какой из таблиц относящийся, а нормальное, по id какому-нибудь (кстати, оно есть?)

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 сен 2006, 17:44

IBExpert просто вешаеться...
статью таки не прочитал. см. ответ WildSery. таблица слева у тебя идет целиком, то есть для нее plan natural. и еще стоит group by. Даже если есть индекс по fdate, все равно переберутся все записи, что долго и нудно.

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

p.s. еще неизвестно, что там во viewdate, если это view.

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 17:45

WildSery писал(а):Ты начинаешь издеваться.
перепиши в таком виде:

Код: Выделить всё

... from viewdate v1 left join viewdate v2 ...
и условие соединения не viewdate.namelog='HTTP.log', кстати, непонятно к какой из таблиц относящийся, а нормальное, по id какому-нибудь (кстати, оно есть?)

Вешается ....! И не отвечает... :-(

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 04 сен 2006, 17:48

Ой, ну нельзя же так, я щас описаюсь :-D Цитировать пол-ответа перед вопросом и всё же задавать его - это уже полный аут :-D И условие объединения достойно пера Айвазовского :roll: SQL - это ведь очень просто на самом деле. Меняем слово Select на Достань, From на Из, Left Join на Объединяя Слева, On на По, Where на Где, Group By на Группируя По, Order By на Сортируя По и читаем полученную фразу и пытаемся прикинуть как сами вместо сервера выполняли бы указание. Тогда сразу становится видно, где от тебя, то бишь сервера, требуют херню.

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 17:49

kdv писал(а):
IBExpert просто вешаеться...
статью таки не прочитал. см. ответ WildSery. таблица слева у тебя идет целиком, то есть для нее plan natural. и еще стоит group by. Даже если есть индекс по fdate, все равно переберутся все записи, что долго и нудно.

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

p.s. еще неизвестно, что там во viewdate, если это view.
Да еще читаю..., да это view потому что это был один из вариантов взять из поля datetime только date потому, что InterBase 5.5 и функции выбора только даты не работают.
:-(

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 04 сен 2006, 17:51

Vetal писал(а):Вешается ....! И не отвечает... :-(
Оборзел IBExpert! Наедь на него конкретно, пусть ответит :lol:

Укажи хоть структуру таблицы, может, найдётся кто добрый, подскажет готовый вариант.
А то мы тебя пытаемся наставить на путь истинный, чтобы сам смог....

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 сен 2006, 17:52

что InterBase 5.5 и
мда. тебе подсказать, или подождать, пока у тебя база грохнется? Стрясти с тебя денег за ремонт...

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 17:55

kdv писал(а):
что InterBase 5.5 и
мда. тебе подсказать, или подождать, пока у тебя база грохнется? Стрясти с тебя денег за ремонт...

Смешно, :-) спасибо за профилактику мозгов, просто уже голова не варит....

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 17:58

WildSery писал(а):
Vetal писал(а):Вешается ....! И не отвечает... :-(
Оборзел IBExpert! Наедь на него конкретно, пусть ответит :lol:

Укажи хоть структуру таблицы, может, найдётся кто добрый, подскажет готовый вариант.
А то мы тебя пытаемся наставить на путь истинный, чтобы сам смог....

Ну блин конкретно наезжал сказал завтра ответит... Сослался на вас съехал... с базара... Ладно пацаны я думаю что разберусь СПАСИБО на самом деле. Просто под конец дня голова не варит... А то что IB старый это не моя пробл.... :-) удачи вам...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 04 сен 2006, 17:59

просто уже голова не варит....
я про 5.6, кстати. которая настоятельно рекомендуется вместо 5.5.

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 04 сен 2006, 18:02

kdv писал(а):
просто уже голова не варит....
я про 5.6, кстати. которая настоятельно рекомендуется вместо 5.5.

ДА ладно прикалывать... все я понял, не задрачивайте.... :-)

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 05 сен 2006, 12:09

Vetal писал(а):ДА ладно прикалывать... все я понял, не задрачивайте.... :-)
Выбирай выражения. И нигде тебя там не прикалывают. Тебе реальные вещи объясняют.

Vetal
Сообщения: 45
Зарегистрирован: 31 июл 2006, 12:58

Сообщение Vetal » 05 сен 2006, 12:21

CyberMax писал(а):
Vetal писал(а):ДА ладно прикалывать... все я понял, не задрачивайте.... :-)
Выбирай выражения. И нигде тебя там не прикалывают. Тебе реальные вещи объясняют.


CyberMax
Спасибо... :-)

Ответить