|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Я в этом деле человек не сведущий, мне нужно составить запрос к базе данных, при выполнении которого будет выдаваться на экран список исполнителей (название исполнителя и дата рождения/образования), отсортированный по дате рождения/образования, а также доход, полученный исполнителями от продажи своих дисков. вот что я придумал Select musicians.msc_id , musicians.msc_birthday from musicians inner join disks on musicicans.msc_id = disks.dsk_id group by musicians.msc_birthday но доход (я так понимаю это SUM(DISKS.DSK_PROFIT)) я вообще не знаю куда вписывать да и мой запрос чтото не работает. я если честно делаю по практикуму и там не объясняется что такое inner join, оно есть во всех примерах и я так делал, но вообще я не понимаю 1 это или 2 команды, + в 1 примере есть left join... пожалуйста, объясните как можно проще, если это возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 00:42 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfest, про JOINы тут красиво написано (букв не много, есть примеры с рисунками) по Вашему запросу: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 01:12 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Поскольку таблицы, поля не приведены, ориентируемся на вкус и цвет, а также по понятиям. Так вот на слух связь Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 01:43 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
select musicians.msc_id , musicians.msc_birthday, sum(disks.dsk_profit) from musicians inner join disks on musicicans.msc_id = disks.msc_id group by musicians.msc_id , musicians.msc_birthday order by musicians.msc_birthday; попробовал, пишет ошибка синтаксиса в операции JOIN при этом он выделяет on musicicans.msc_id = disks.msc_id ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 07:34 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfest, musicicans - это что? почему не musicicicians? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 07:38 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Про JOIN прочитал, спасибо Ваш вариант был правильный, только он что-то ругался, правда msc_id надо было изменить на msc_name: select musicians.msc_name, musicians.msc_birthday, sum(disks.dsk_profit) from musicians inner join disks on musicians.msc_id = disks.msc_id group by musicians.msc_name , musicians.msc_birthday order by musicians.msc_birthday; вы не моглибы мне поточнее объяснить разницу group by и order by? ведь по сути одно значит сгрупировать по... рассортировать по... я просто не понимаю почему здесь написано именно group by musicians.msc_name , musicians.msc_birthday и нету например group by sum(disks.dsk_profit) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 07:44 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
да ошибся в написании вот и ошибка была) а так вроде тут разобрался, сейчас нужно составить запрос к базе данных, при выполнении которого будет выдаваться на экран список стран и доход, полученный всеми исполнителями страны по годам выпуска дисков совершенно не понимаю как это можно написать что-то типо select musicians.msc_country, sum(disks.dsk_profit), musicians.msc_name from musicians inner join disks on musicians.msc_id = disks.msc_id group by disks.dsk_year, musicians.msc_country, musicians.msc_name у меня он показывает колонку msc_country, но страны повторяются: usa usa usa usa russia russia итп, при этом следующая колонка- доход, идет правильно и она рассортирована вроде по датам, а след колонка уже название групп, как мне изменить запрос чтобы он показывал список стран 1 раз (я чтото вообще не представляю что тут надо написать) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 07:57 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Кажется select musicians.msc_country, sum(disks.dsk_profit), disks.dsk_year from musicians inner join disks on musicians.msc_id = disks.msc_id group by disks.dsk_year, musicians.msc_country вполне отвечае условиям задачи =) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:06 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Составить запрос к базе данных, при выполнении которого будут выдаваться на экран список из 3-х исполнителей/групп, выпустивших максимальное количество дисков за период с 1985 по 2005 годы, с указанием количества дисков и года образования/рождения группы/исполнителя. А как в таком запросе ставить ограничение на показ только трех исполнителей, ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:11 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Select Top 3 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:24 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Нашел, вроде команда TOP 3. написал я запрос select top 3 musicians.msc_name, sum(disks.dsk_copies) from musicians inner join disks on musicians.msc_id = disks.msc_id where disks.dsk_year between #01/01/1995# and #12/31/2004# group by musicians.msc_name который нефига не работает ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:24 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Не хватает сортировки, причем в обратном порядке Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:29 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
да, сортировки не хватает, но еще проблема в том, что where disks.dsk_year between #01/01/1985# and #01/01/2005# не работает, если удаляю эту строку, показывает топ 3, а если оставляю то таблица пустая... где то ошибка чтоли спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:31 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfest, поле disks.dsk_year это даты или года? Т.е., поле датное или числовое? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:36 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
числовое целое! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:42 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Понял ошибку, правильный запрос: select top 3 musicians.msc_name, sum(disks.dsk_copies), musicians.msc_birthday from musicians inner join disks on musicians.msc_id = disks.msc_id where disks.dsk_year between 1985 and 2005 group by musicians.msc_name, musicians.msc_birthday, disks.dsk_year Order By sum(disks.dsk_copies) Desc ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 08:43 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfestПро JOIN прочитал, спасибо Ваш вариант был правильный, только он что-то ругался, правда msc_id надо было изменить на msc_name: select musicians.msc_name, musicians.msc_birthday, sum(disks.dsk_profit) from musicians inner join disks on musicians.msc_id = disks.msc_id group by musicians.msc_name , musicians.msc_birthday order by musicians.msc_birthday; вы не моглибы мне поточнее объяснить разницу group by и order by? ведь по сути одно значит сгрупировать по... рассортировать по... я просто не понимаю почему здесь написано именно group by musicians.msc_name , musicians.msc_birthday и нету например group by sum(disks.dsk_profit) про ORDER BY и GROUP BYК сожалению не нашел столь-же крассивого объяснения, как для JOIN . Попробую свими словами. С ORDER BY все просто. Предложение указывает, каким образом должен быть упорядочен выходной набор данных. Всё. Теперь про GROUP BY (возможно путано, зато от всей души). Небольшое лирическое отступление. К результатам запроса могут применяться агрегирующие фунции: уже известная Вам SUM() , AVG() , подсчитывающая среднее, MIN() и MAX() , - соответственно наименьшее и наибольшее занчения. GROUP BY указывает по каким признакам разделить результаты запроса на группы, для каждой из которых в отдельности будет вычислена агрегирующая функция. Если в предложении FROM кроме агрегирующих функций есть обращения к другим полям, то перечень этих полей обязательно требуется включить в предложение GROUP BY. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 10:34 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Эх, ребят, предпоследний запрос, возможно последний который я тут пишу тк зачет через час: Составить запрос к базе данных, при выполнении которого будут выдаваться на экран список стран и количество дисков, выпущенных в каждой из стран за период с 1985 по 2005 годы, отсортированный в порядке убывания количества выпущенных дисков и только те страны, в которых было выпущено более 100 000 дисков. Вот что я об этом думаю: select musicians.msc_contries, disks.dsk_copies from musicians inner join disks on musicians.msc_id = disks.dsk_id where disks.dsk_year between 1985 and 2005 group by musicians.msc_countries, disks.dsk_copies order by sum(disks.dsk_copies) desc мой вопрос, как сюда запихнуть еще 1 условие? какая команда это делает? условие как вы понимаете "выпуск более 100 000 дисков.... у меня конечно есть вариант написать union и еще раз всю таблицу переписать и лишь where изменить на другое условие но это по-моему бред) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:40 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfest Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:44 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
ура! спасибо) понял, "having" остался последний: Составить запрос к базе данных, при выполнении которого будут выдаваться на экран список стран и средняя стоимость дисков в каждой из стран. который я совершенно не понимаю, нам нужно посчитать средннюю стоимость дисков в каждой из стран, это значит что нужно весь доход поделить на все кол-во дисков, как это посчитать без арифметических действий, через команды... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:48 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
...подождите, а где у вас это? 1nfest... Составить запрос к базе данных, при выполнении которого будут выдаваться на экран список стран и количество дисков, выпущенных в каждой из стран за период с 1985 по 2005 годы, отсортированный в порядке убывания количества выпущенных дисков и только те страны, в которых было выпущено более 100 000 дисков. наверно сумма за период нужна, а не погодам...имхо типа так Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:52 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
Сгруппировать по странам и применить функцию Avg ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:53 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
1nfest... как это посчитать без арифметических действий, через команды... вот так Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 13:55 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
select musicians.msc_countries, avg(disks.dsk_profit/disks.dsk_copies) as Sum-Profit from musicians inner join disks on musicians.msc_id = disks.msc_id group by musicians.msc_countries, avg(disks.dsk_profit/disks.dsk_copies) так? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 14:16 |
|
Задача Access по двум таблицам,
|
|||
---|---|---|---|
#18+
однозначно это лишнее 1nfestselect musicians.msc_countries, avg(disks.dsk_profit/disks.dsk_copies) as Sum-Profit from musicians inner join disks on musicians.msc_id = disks.msc_id group by musicians.msc_countries, avg(disks.dsk_profit/disks.dsk_copies) так? и что такое disks.dsk_profit - это цена/стоимость ?? или что ? если цена то просто avg(disks.dsk_profit) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2010, 14:23 |
|
|
start [/forum/topic.php?fid=45&fpage=121&tid=1614234]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 146ms |
0 / 0 |