13:36

in the porn when i was born sky is blue and see is green
Подскажите, как лучше реализовать SQl-запрос

Ситуация: есть БД в Access (таблица Заказы, которая содержит поля: ID Услуги seo, ID Услуги сайты, ID Услуги web-дизайн, ID Услуги Контент, Общая стоимость; соответственно таблицы: Услуги seo, Услуги сайты, Услуги web-дизайн, Услуги Контент, в которых содержится по несколько записей, в них же есть поле Стоимость), есть СУБД в Делфи.

Проблема: не знаю как и где (в Делфи или в Аксессе) написать запрос так, чтобы подсчитывалась Общая стоимость в таблице Заказы, если выбрано несколько услуг. Подскажите, как и где лучше реализовать? Думаю насчет запроса в Аксессе, чтобы выводил сумму по полю Общая стоимость, а потом его уже в Делфи вывести. Но как, к примеру, выбрать не все значения поля Стоимость из Таблицы Услуги Seo, а только то одно, которое выбрано в таблице Заказы в поле ID Услуги seo?

Скрин:


Комментарии
28.11.2010 в 15:39

как, к примеру, выбрать не все значения поля Стоимость из Таблицы Услуги Seo, а только то одно, которое выбрано в таблице Заказы в поле ID Услуги seo?

дык вроде ж WHERE 'Услуга seo'.'ID услуги seo' = Заказ.'ID услуги seo' ? или так не работает?
28.11.2010 в 17:14

The day that you stop running is the day that you arrive.
А чем визуализировали структуру?
28.11.2010 в 18:05

Танкист Апокалипсиса
Аксесом, видно.
28.11.2010 в 18:10

Танкист Апокалипсиса
А мне вот такая структура БД не нравится совсем. Таблицы услуг - однотипные, посему получается умножение сущностей аж в четыре раза. Если, в рамках данной БД, хочется как-то разнести услуги по типам, достаточно в таблицу услуг добавить поле "тип услуги". По-хорошему, придётся добавить ещё одну табличку из двух полей: "идентификатор услуги" и "название типа услуги".
28.11.2010 в 18:12

Танкист Апокалипсиса
В результате упростятся запросы.
28.11.2010 в 19:08

ну, я так понял, вопрос был в том, как сделать запрос с этой БД, а не как можно оптимизировать БД
28.11.2010 в 19:12

in the porn when i was born sky is blue and see is green
Enkryptor, точно. пойду попробую. не допер маленечко хД
DukeSS, по-хорошему то да )
neo_rage, аксессом.
28.11.2010 в 19:59

The day that you stop running is the day that you arrive.
DukeSS не юзаю, вот и не узнал))
кот и кофе спасибо) извините за офтоп, просто ищу удобное средство визуализации, в идеале опенсорс)
Кстати, DukeSS насчет оптимизации дело говорит, но с текущей базой можно сделать так, как написал Enkryptor
28.11.2010 в 20:20

in the porn when i was born sky is blue and see is green
neo_rage, ищу удобное средство визуализации, в идеале опенсорс) - чем dia не нравится?
на счет оптимизации вопрос сейчас не стоит, а вот с sql все равно не впираю, ведь у меня заказов много, как сделать общую стоимость для каждого из заказов? в идеале, если бы это выходило в поле общая стоимость.
29.11.2010 в 00:32

The day that you stop running is the day that you arrive.
кот и кофе ненене! Dia - любовь на веки вечные при построении любых блок-схем! Я неточно выразился, мне бы по имеющейся базе построить автоматически с возможностью проставить связи руками :) Т.е. указываешь ему базу / сервер, он всасывает таблицы, отмечает специальными значками ключевые, полнотекстовые итд поля, опции полей там же пишет, а связи я руками проставлю :-D
Я уже сам задумался над тем, чтобы написать такую фигню. Слишком часто приходится визуализировать гигантские базы для заказчиков, при сдаче проектов )))
29.11.2010 в 00:33

The day that you stop running is the day that you arrive.
кот и кофе По теме: заказов-то у тебя много, но ID у каждого заказа уникальный.
допиши во WHERE еще Id заказа=значение
29.11.2010 в 02:04

это не база данных, это типичный аксес вместе с типичным пользователем аксеса.

что вам говорите надо было? Но как, к примеру, выбрать не все значения поля Стоимость из Таблицы Услуги Seo, а только то одно, которое выбрано в таблице Заказы в поле ID Услуги seo?

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

select * from "Заказ" natural join "Услуга seo" where "ID заказа" = <значение> -- natural join, поскольку названия столбцов совпадают
29.11.2010 в 02:34

The day that you stop running is the day that you arrive.
ehlo_kitty вышеупомянутый where с привязкой по полям таблиц по сути тот же джойн, а пишется проще - потому и был помянут)))
29.11.2010 в 08:18

всем срочно учить реляционную теорию! что за "привязка по полям таблиц"? select * from t1, t2 ... выбирает две перемноженные таблицы, а потом их фильтрует -- это чрезвычайно неоптимально, и снова полностью характеризует аксес и его пользователей. внешний ключ и иннер джойн ходят парой, это же очевидно.
29.11.2010 в 19:59

The day that you stop running is the day that you arrive.
ehlo_kitty спасибо, кэп. :)
я думаю, мы здесь не выяснять знания друг друга пришли, да и смысла нет.

отвечаем по теме. человек, создавший пост, написал, что оптимизация его не интересует.
29.11.2010 в 20:05

суть в том, что это не оптимизация, это так сказать основы. ща пример приведу.



это условно ваш метод


это условно мой
30.11.2010 в 20:42

The day that you stop running is the day that you arrive.
ehlo_kitty спасибо, кэп :)

Нет, правда. О чем речь? Я юзаю джойны. А здесь мы описали, как проще, обычное перемножение.
30.11.2010 в 20:46

не пишите говнокод "потому что он проще", не портите себе карму например.
30.11.2010 в 20:55

The day that you stop running is the day that you arrive.
ehlo_kitty я о своей карме позабочусь сам. если человеку надо сделать и все - он сделает так, и так будет проще.
если человеку надо учиться - то смотри момент с предложением по оптимизации таблиц.

я тоже за то, чтобы каждую работу выполнял профессионал своего дела, но это же не реально %)
30.11.2010 в 23:44

а вы не ориентируйтесь на реальность, реальность отвратительна и должна быть законодательно запрещена например. если у вас человек спросит "вот я тут символ в строке регэкспом ищу и чота ошибка у меня в нём", вы что, реально будете ему отвечать? потому что "надо сделать и всё"? о-я-е--- например.

пожалуй разверну мысль ещё немного.

ведь что значит "надо сделать"? этот запрос ведь не во сне выполняется, и не в сказке. это ведь реальные данные откуда-то выбираются, ну в лучшем случае в учебных целях. есть ненулевая вероятность, что человек который проектирует такие бд, пишет в дельфях почти в 2011 году в рот мне ноги, а главное задаёт такие вопросы окажется востребован, будет работать по специальности, и обогащать мир продуктами своей деятельности. и вы будете в этом виноваты.
01.12.2010 в 00:31

The day that you stop running is the day that you arrive.
ehlo_kitty Я, в отличие от тебя, никогда не учу насильно :))))
Не хочет - не надо.
01.12.2010 в 07:58

ладно, живите как хотите, мне всё равно.