Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка.... и сортировка / 21 сообщений из 21, страница 1 из 1
09.09.2014, 20:35:00
    #38742196
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Добрый день, прошу помощи в формировании запроса с сортировкой.

Задача следующая:
есть 3 типа валюты и 6 типов вклада и ставка по вкладу
структуру хранения данных прикладываю во вложении.

после выполнения запроса хочу получить вывод:
сейчас формирует так: построчно

имя банка 1 | регномер | имя валюты | uid вклада | ставка(bet)
имя банка 1 | регномер | имя валюты | uid вклада | ставка
имя банка 1 | регномер | имя валюты | uid вклада | ставка
имя банка 1 | регномер | имя валюты | uid вклада | ставка

имя банка 2 | регномер | имя валюты | uid вклада | ставка(bet)
имя банка 2 | регномер | имя валюты | uid вклада | ставка
имя банка 2 | регномер | имя валюты | uid вклада | ставка
имя банка 2 | регномер | имя валюты | uid вклада | ставка

выводить или сортировать было бы удобно из массива следующего вида(добавить доп столбцы):

имя банка 1 | регномер | ставка 1 валюта1(bet) | ставка 2 валюта1(bet) | ставка 1 валюта 2(bet) |
имя банка 2 | регномер |
имя банка 3 | регномер |
имя банка 4 | регномер |


пробывал делать примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
Select b.name,r.number as regnum,c.currency, t.uid, a.bet 
From archive a inner join banks b
 on a.bank_uid = b.uid 
inner join regnum r 
 on a.bank_uid = r.uid 
inner join currency c 
 on a.currency_uid = c.uid 
inner join type t on a.type_uid = t.uid
...
Рейтинг: 0 / 0
09.09.2014, 20:47:54
    #38742200
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
...
Рейтинг: 0 / 0
09.09.2014, 20:53:22
    #38742203
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4,

лично я не понял задачу... можно как-нибудь попроще объяснить?
...
Рейтинг: 0 / 0
09.09.2014, 21:21:14
    #38742208
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
получить после запроса такой массив:
имя банка 1 | регномер | ставка 1 валюта1(bet) | ставка 2 валюта1(bet) | ставка 1 валюта 2(bet) |
имя банка 2 | регномер |
имя банка 3 | регномер |
имя банка 4 | регномер |
...
Рейтинг: 0 / 0
09.09.2014, 21:23:20
    #38742210
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4,

Никак. Набор полей не может быть разным в разных записях.
...
Рейтинг: 0 / 0
09.09.2014, 21:33:40
    #38742215
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
я структуру могу поменять

изначально данные собираются с множества файлов такого формата
Код: xml
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.
<?xml version="1.0" encoding="WINDOWS-1251"?>
<CredOrgDepRate Title="Информация  о  процентных  ставках по договорам банковского  вклада с физическими лицами" DocDate="07.2014" ver="1.0">
<Org RegNum="3286" Name="ООО &quot;Дагэнергобанк&quot;">
<DepositsRub Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в российских рублях (в процентах годовых)">
<CallDep Title="До востребования">1,450</CallDep>
<Dep90 Title="На срок до 90 дней">5,671</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">7,340</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">11,500</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">12,212</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">13,601</Dep3up>
</DepositsRub>
<DepositsUSD Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в долларах США (в процентах годовых)">
<CallDep Title="До востребования">-</CallDep>
<Dep90 Title="На срок до 90 дней">-</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">3,531</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">-</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">5,182</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">-</Dep3up>
</DepositsUSD>
<DepositsEur Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в евро (в процентах годовых)">
<CallDep Title="До востребования">-</CallDep>
<Dep90 Title="На срок до 90 дней">-</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">-</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">-</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">-</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">-</Dep3up>
</DepositsEur>
</Org>
</CredOrgDepRate>



какую структуру бд сделать под такие данные ?
...
Рейтинг: 0 / 0
09.09.2014, 22:02:47
    #38742232
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4получить после запроса такой массив:
имя банка 1 | регномер | ставка 1 валюта1(bet) | ставка 2 валюта1(bet) | ставка 1 валюта 2(bet) |
имя банка 2 | регномер |
имя банка 3 | регномер |
имя банка 4 | регномер |

вот я эту задачу и не могу понять
я не пойму что это означает
я хочу увидеть результат в виде данных, а не в виде описания данных

ещё я не пойму что означает таблица во втором посте
короче, если честно, то вообще нихрена не понятно
даже вот эта фраза
и то не понятна
Дмитри4есть 3 типа валюты и 6 типов вклада и ставка по вкладу

то, что у вас сейчас происходит это довольно типичная ситуация
вы долго-долго варились в этой задаче и многие вещи вы просто выучили наизусть и они кажутся вам само-собой разумеющимися
но у нас, кто видит задачу впервые вообще нифига не понятно
...
Рейтинг: 0 / 0
10.09.2014, 09:07:21
    #38742439
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Lumixвы долго-долго варились в этой задаче и многие вещи вы просто выучили наизусть и они кажутся вам само-собой разумеющимися
тут вы правы, возможно так и есть.

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

сейчас база выглядит так:
Код: sql
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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
-- phpMyAdmin SQL Dump
-- version 4.2.8
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Сен 10 2014 г., 09:04
-- Версия сервера: 5.5.39-log
-- Версия PHP: 5.5.16-pl0-gentoo

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- База данных: `deposits`
--

-- --------------------------------------------------------

--
-- Структура таблицы `archive`
--

CREATE TABLE IF NOT EXISTS `archive` (
`uid` int(11) NOT NULL,
  `bank_uid` bigint(15) NOT NULL,
  `currency_uid` tinyint(5) NOT NULL,
  `type_uid` tinyint(5) NOT NULL,
  `date_uid` int(11) NOT NULL,
  `bet` decimal(6,4) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=12655 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `banks`
--

CREATE TABLE IF NOT EXISTS `banks` (
`uid` int(11) NOT NULL,
  `name` varchar(200) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=681 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `currency`
--

CREATE TABLE IF NOT EXISTS `currency` (
`uid` int(4) NOT NULL,
  `currency` varchar(11) NOT NULL,
  `curr_xml` varchar(15) NOT NULL,
  `curr_name` varchar(50) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `date`
--

CREATE TABLE IF NOT EXISTS `date` (
`uid` int(11) NOT NULL,
  `docdate` date NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `regnum`
--

CREATE TABLE IF NOT EXISTS `regnum` (
`uid` int(11) NOT NULL,
  `number` bigint(11) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=678 DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Структура таблицы `type`
--

CREATE TABLE IF NOT EXISTS `type` (
`uid` int(4) NOT NULL,
  `type_bet` varchar(50) NOT NULL,
  `type_xml` varchar(50) NOT NULL,
  `name` varchar(100) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `archive`
--
ALTER TABLE `archive`
 ADD PRIMARY KEY (`uid`), ADD UNIQUE KEY `archive` (`uid`), ADD KEY `archive_2` (`uid`), ADD KEY `archive_3` (`uid`);

--
-- Индексы таблицы `banks`
--
ALTER TABLE `banks`
 ADD PRIMARY KEY (`uid`), ADD UNIQUE KEY `name` (`name`);

--
-- Индексы таблицы `currency`
--
ALTER TABLE `currency`
 ADD PRIMARY KEY (`uid`);

--
-- Индексы таблицы `date`
--
ALTER TABLE `date`
 ADD PRIMARY KEY (`uid`), ADD UNIQUE KEY `date` (`docdate`);

--
-- Индексы таблицы `regnum`
--
ALTER TABLE `regnum`
 ADD PRIMARY KEY (`uid`), ADD UNIQUE KEY `number` (`number`);

--
-- Индексы таблицы `type`
--
ALTER TABLE `type`
 ADD PRIMARY KEY (`uid`), ADD UNIQUE KEY `type` (`type_bet`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `archive`
--
ALTER TABLE `archive`
MODIFY `uid` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=12655;
--
-- AUTO_INCREMENT для таблицы `banks`
--
ALTER TABLE `banks`
MODIFY `uid` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=681;
--
-- AUTO_INCREMENT для таблицы `currency`
--
ALTER TABLE `currency`
MODIFY `uid` int(4) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4;
--
-- AUTO_INCREMENT для таблицы `date`
--
ALTER TABLE `date`
MODIFY `uid` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;
--
-- AUTO_INCREMENT для таблицы `regnum`
--
ALTER TABLE `regnum`
MODIFY `uid` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=678;
--
-- AUTO_INCREMENT для таблицы `type`
--
ALTER TABLE `type`
MODIFY `uid` int(4) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;
...
Рейтинг: 0 / 0
10.09.2014, 10:41:59
    #38742548
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4, странно выглядит вынос дат в отдельную таблицу. Если вам необходимо хранить документ-источник, то сделайте дату атрибутом документа (чем она и является).
Хотя... вчитался внимательнее. Таблица "дат" - это НСД таблица документов? Запутывание следов 80 уровня :)
В остальном вроде нормально, но вы учтите, что мы так и не знаем вашей задачи, т.е. каким образом эти данные будут использоваться, какие к ним могут быть запросы.
PS. какой в дупу "bet"? это же не ипподром...
...
Рейтинг: 0 / 0
10.09.2014, 11:23:21
    #38742592
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
tanglirТаблица "дат" - это НСД таблица документов?
что такое НСД?


Есть 1000 XML файлов вида как приведено выше.
Задача:
Сохранить из XML файла данные в базу чтобы в дальнейшем была возможность выполнить сортировку или поиск.

я незнаю как уже объяснить.....
...
Рейтинг: 0 / 0
10.09.2014, 13:07:40
    #38742806
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4,

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

на данный момент из всего что я понял у меня складывается впечатление, что вы хотите видеть таблицу типа такой:

Код: sql
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.
create table svod_bank_acc_offer
(
    bankIdReg int, 
    bankTit txt,
    dateTag date,

    rate_rur_dep_0 real,
    rate_rur_dep_90 real,
    rate_rur_dep_180 real,
    rate_rur_dep_360 real,
    rate_rur_dep_1080 real,
    rate_rur_dep_1080_over real,

    rate_usd_dep_0 real,
    rate_usd_dep_90 real,
    rate_usd_dep_180 real,
    rate_usd_dep_360 real,
    rate_usd_dep_1080 real,
    rate_usd_dep_1080_over real,

    rate_eur_dep_0 real,
    rate_eur_dep_90 real,
    rate_eur_dep_180 real,
    rate_eur_dep_360 real,
    rate_eur_dep_1080 real,
    rate_eur_dep_1080_over real

)



и если так, то я никак не могу понять нахера городить огород из кучи хер знает каких таблиц, если можно обойтись всего одной
...
Рейтинг: 0 / 0
10.09.2014, 13:31:59
    #38742862
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
если бы у меня было бы виденее базы данных я бы не спрашивал тут какую структуру выбрать.
...
Рейтинг: 0 / 0
10.09.2014, 13:38:40
    #38742879
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4если бы у меня было бы виденее базы данных я бы не спрашивал тут какую структуру выбрать.

из всего что вы на данный момент объяснили вам не нужна никакая "БАЗА", а достаточно всего одной таблицы из 21 колонки)))
...
Рейтинг: 0 / 0
10.09.2014, 13:46:28
    #38742906
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
LumixДмитри4если бы у меня было бы виденее базы данных я бы не спрашивал тут какую структуру выбрать.

из всего что вы на данный момент объяснили вам не нужна никакая "БАЗА", а достаточно всего одной таблицы из 21 колонки)))
Что-то не подсказывает это не совсем нормальное решение
...
Рейтинг: 0 / 0
10.09.2014, 13:53:37
    #38742915
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4Что-то не подсказывает это не совсем нормальное решение

вам пока ничего не может подсказывать, потому что вы до сих пор ещё не составили пример как должен выглядеть результат всей вашей задачи

ваша ошибка состоит в том, что вы сели за клавиатуру ещё до того как у вас появился образ того, что вы хотите получить в итоге
проще говоря, вы сели за работу без оплаченного заказа от клиента)))
...
Рейтинг: 0 / 0
10.09.2014, 14:01:20
    #38742931
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Все ясно, тема закрыта
...
Рейтинг: 0 / 0
11.09.2014, 07:03:39
    #38743743
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4что такое НСДна самом деле

Дмитри4Задача:
Сохранить из XML файла данные в базу чтобы в дальнейшем была возможность выполнить сортировку или поиск.сортировку по каким параметрам?
поиск по каким параметрам?
в текущей формулировке можно посоветовать сгружать эти файлы в единственное blob/text поле единственной таблицы, и хрен кто докажет, что это неправильно...
...
Рейтинг: 0 / 0
11.09.2014, 13:15:41
    #38744115
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
tanglirсортировку по каким параметрам?
нужна будет сортировка по валюте и типу вклада , при этом не нужно выводить только одну валюту один вклад
задача выбрать всю информацию по каждому банку , отсортировать по критериям пользователя и вывести на экран.

tanglirпоиск по каким параметрам?
к примеру по наименованию банка\рег номеру
tanglirв текущей формулировке можно посоветовать сгружать эти файлы в единственное blob/text поле единственной таблицы
будет неудобно для сортировки
...
Рейтинг: 0 / 0
11.09.2014, 13:43:29
    #38744159
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Код: sql
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.
CREATE TABLE IF NOT EXISTS `archive` (
  `id` int(11) NOT NULL,
  `id_bank` bigint(15) NOT NULL,
  `id_currency` tinyint(5) NOT NULL,
  `id_dep_type` tinyint(5) NOT NULL,
  `rate` decimal(6,4) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=12655 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `banks` (
  `id` int(11) NOT NULL,
  `name` varchar(200) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=681 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `currency` (
  `id` int(4) NOT NULL,
  `name_short` varchar(11) NOT NULL,
  `xml` varchar(15) NOT NULL,
  `name_long` varchar(50) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `doc` (
  `id` int(11) NOT NULL,
  `num` bigint(11) NOT NULL -- номер документа
  `dt` date NOT NULL -- дата документа
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `dep_type` ( -- ЯНП, нахрена тут была ставка, если они хранятся в архиве
  `id` int(4) NOT NULL,
  `xml` varchar(50) NOT NULL,
  `name` varchar(100) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;



PS.вы уверены, что вам нужен именно муисам, а не инно?
PPS.Дмитри4задача выбрать всю информацию по каждому банкупокажите мне пользователся, которому необходимо (которой способен работать с) более 50 записей единовременно (с)
...
Рейтинг: 0 / 0
11.09.2014, 17:15:28
    #38744503
Дмитри4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
tanglirPS.вы уверены, что вам нужен именно муисам, а не инно?


Для таких данных что лучше?
...
Рейтинг: 0 / 0
12.09.2014, 06:57:51
    #38744795
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка.... и сортировка
Дмитри4, майисам кагбэ уже давно устаревший движок. Мне даже сложно сказать, в каком случае его можно предпочеть инно - ну разве что у вас старая версия мускля и нужен фултекстовый поиск, но это явно не ваш случай.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / выборка.... и сортировка / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]