|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Мускулем занялся недавно, поэтому много гллупых вопросов возникает... Вопрос: Есть несколько таблиц # -------------------------------------------------------- # Хост: localhost # Время создания: Июн 24 2003 г., 17:23 # Версия сервера: 4.00.13 # Версия PHP: 4.3.0 # БД : `n_b` # -------------------------------------------------------- # # Структура таблицы `antares` # CREATE TABLE antares ( data date NOT NULL default '2003-06-31', gsm ENUM('А-95', 'А-92', 'А-80', 'А-76', 'Дт') NOT NULL, prixod varchar(20) NOT NULL default '0,00', rasxod varchar(20) NOT NULL default '0,00', ostatok varchar(20) NOT NULL default '0,00', KEY gsm (gsm) ) TYPE=MyISAM; # # Дамп данных таблицы `antares` # INSERT INTO antares VALUES ('2003-06-04', 'А-95', '0,00', '1000,00', '164475,00'); INSERT INTO antares VALUES ('2003-06-04', 'А-92', '0,00', '0,00', '157795,00'); INSERT INTO antares VALUES ('2003-06-04', 'А-80', '0,00', '0,00', '78769,60'); INSERT INTO antares VALUES ('2003-06-04', 'А-76', '0,00', '0,00', '497000,00'); INSERT INTO antares VALUES ('2003-06-04', 'Дт', '0,00', '0,00', '203245,00'); # -------------------------------------------------------- # # Структура таблицы `bologoe` # CREATE TABLE bologoe ( data date NOT NULL default '2003-06-31', gsm ENUM('А-76', 'Дт', 'Б-1') NOT NULL, prixod varchar(20) NOT NULL default '0,00', rasxod varchar(20) NOT NULL default '0,00', ostatok varchar(20) NOT NULL default '0,00', KEY gsm (gsm) ) TYPE=MyISAM; # # Дамп данных таблицы `bologoe` # INSERT INTO bologoe VALUES ('2003-06-05', 'Дт', '0,00', '17230,44', '139859,56'); INSERT INTO bologoe VALUES ('2003-06-05', 'А-76', '0,00', '0,00', '102233,00'); INSERT INTO bologoe VALUES ('2003-06-05', 'Б-1', '0,00', '0,00', '144600,00'); # -------------------------------------------------------- требуется вывести отчет (вот тут у меня есть проблемы ...) суммировать поле rasxod из всех таблиц, но не просто,а по полю gsm и вывести результаты отсортировав по полю data. я уже голову всю сломал, как ... не дайте умереть, помоготи кто, чем может ... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2003, 17:40 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Все неправильно. В корне. У тебя 2 абослютно одинаковые таблицы . Зачем хранить одинаковые данные в таблицах? Так никто не делает. делают так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2003, 18:18 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
В запросе - ошибка: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Ну и данные туда. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2003, 18:23 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Да, и создание таблиц без первичного ключа - отвратительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2003, 18:26 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
с созданием таблиц разобрался, а вот с выводом результатов не очень Твой запрос SELECT fuel_types_id, SUM(rashod) FROM fuel_usage_stats GROUP BY fuel_types_id, ctime ORDER BY ctime выведет строки вида I гсм I Расход I ----------------- I 1 I 1000,00 I ----------------- I 2 I 500,00 I ------------------ Добавим ctime SELECT ctime, fuel_types_id, SUM(rashod) FROM fuel_usage_stats GROUP BY fuel_types_id, ctime ORDER BY ctime получим I дата I гсм I Расход I ------------------------------ I 2003-06-07 I 1 I 1000,00 I ------------------------------ I 2003-06-07 I 2 I 500,00 I ------------------------------ Происходит вывод не суммы, а всех записей, или я что-то не понял ??? Или может я плохо сформулировал вопрос: суммировать поле rasxod всех городов (cities.name), по полю fuel_types.name и вывести результаты отсортировав по полю fuel_usage_stats.ctime. результат должен выглядить примено так: I дата I гсм I Расход I ------------------------------ I 2003-06-07 I А-95 I 1000,00 I ------------------------------ I 2003-06-07 I А-92 I 500,00 I ------------------------------ I 2003-06-08 I А-95 I 200,00 I ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 13:14 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
При этом сделай поле ctime типом DATE. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 13:37 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Заработало!!!!!!!! только по условию вывода вот так SELECT ctime, fuel_types_id, SUM(rashod) FROM fuel_usage_stats GROUP BY fuel_types_id, ctime ORDER BY ctime что надо "покрутить", чтоб вместо цифирного fuel_usage_stats.fuel_types_id выдавался fuel_types.name т.е. не 1 , 2 , 3 ... , а А-95, А-92, А-80 ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 14:16 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
А самому подумать? Подумать порядка 10 - 20 секунд. И почитать про пересесения таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 14:52 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
SELECT ctime, fuel_types.name, SUM(rashod) FROM fuel_usage_stats, fuel_types WHERE fuel_types.id = fuel_usage_stats.fuel_types_id GROUP BY fuel_types_id, ctime ORDER BY ctime ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 14:55 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
SELECT ctime, fuel_types.name, SUM(rashod) FROM fuel_usage_stats, fuel_types WHERE fuel_types.id = fuel_usage_stats.fuel_types_id GROUP BY fuel_types_id, ctime, fuel_types.name ORDER BY ctime; ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 15:07 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
А зачем дополнительная группировка по наименованиею (fuel_types.name) ? Вроде - по fuel_types_id будет достаточно... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 15:11 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
2BigHarry, потому что это только в MySQL возможно выбирать поля по которым не происходит группировка. Он в этом случае берет одно из нескольких значений наабум. А так всегда эти поля перечисляют в GROUP BY ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 15:23 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
Всем большое спасибо! теперь может бухгалтерия оставят меня в покое на денек ... 2Stellar Обязательно еще почитаю, просто я ентого еще не понял, а "Бух" ногами топает результат ему давай, типа работа стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2003, 15:57 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
>>Он в этом случае берет одно из нескольких значений наабум. >>А так всегда эти поля перечисляют в GROUP BY Почему наобум? Это-же по сути - обычное объедиенние - и любой SQL-сервер должен выдавать нормально, без дополнительной группировки. Группировка - она для функций, а тут - обычная связь... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2003, 10:57 |
|
Помогите создать запрос
|
|||
---|---|---|---|
#18+
2BigHarry, если в таблице есть 4 поля, ты группируешь по двум из них, то к другим двум, если ты их хочешь показывать, ты должен применить одну из агригирующих функций. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
На твой взгляд, что выдаст скрипт, и на каком основании? На MySQL этот скрипт отработает, а вот на Oracle или MS SQL - НЕТ! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2003, 11:28 |
|
|
start [/forum/topic.php?fid=47&fpage=705&tid=1855944]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 412ms |
0 / 0 |