Помогите создать запрос

Всё о СУБД MySQL.
Ответить
Jurbanec
Сообщения: 2
Зарегистрирован: 16.01.2023 14:29:41

Помогите создать запрос

Сообщение Jurbanec »

Добрый день имеется Б.Д., где

// Начало
CREATE TABLE `Вася_Пупкин` (
`Наименование` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`Ном.№` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`Стоимость` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`22.08.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`05.09.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`08.09.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`13.09.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`27.09.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`13.10.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`20.10.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`27.10.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`03.11.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`14.11.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`13.12.22` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci',
`12.01.23` VARCHAR(1024) NULL DEFAULT NULL COLLATE 'cp1251_general_ci'
)
COLLATE='cp1251_general_ci'
ENGINE=InnoDB
;
// Конец

Не могу сделать выборку: `Наименование`, `Ном.№`, `12.01.23`*
* `12.01.23` -это дата последнего поступления на склад. Столбцы постоянно добавляются другими датами.
В некоторых языках программирования имеется возможность выбрать по номеру столбца. В SQL что-то плохо искал.

Помогите написать запрос, при котором формировался ответ для дальнейшего экспорта на моб.устройства.
fraks
Сообщения: 26
Зарегистрирован: 06.04.2022 11:27:22

Re: Помогите создать запрос

Сообщение fraks »

Здесь в каждой строке, как минимум одна ошибка.
Строить запрос по ЭТОМУ - бессмысленно.

Переделывай "базу" которая "есть".
Jurbanec
Сообщения: 2
Зарегистрирован: 16.01.2023 14:29:41

Re: Помогите создать запрос

Сообщение Jurbanec »

Это структура Б.Д..
Столбцы: Наименование, Ном.№, Стоимость, Дата №1, Дата№2,.., Дата№N.
строки: Название запчасти, в рублях, Кол-во запчастей на эту дату.
Пример:
Наименование: Аккумулятор для CARDIOVIT АТ-1 Размер 97х43х52 мм. Ном.№: ГУ-000000011383, Кол-во: 7

SELECT Наименование, Ном.№, ? FROM `srv50b`.`Вася_Пупкин` WHERE ?>0;


Нужно выбрать: Наименование, Ном.№, Дата№N.
В языках программирования просто сделать, но в SQL не могу найти инфу.
куда это вставить не осиливаю.
USE information_schema;
SELECT
COLUMN_NAME,
ORDINAL_POSITION
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'srv50b'
AND TABLE_NAME ='Вася_Пупкин'
ORDER BY ORDINAL_POSITION DESC
LIMIT 1;
Сервер Б.Д. установлен на удаленном хостинге.

База работает не один год. и удовлетворяет потребности.
Последний раз редактировалось Jurbanec 19.01.2023 09:52:44, всего редактировалось 1 раз.
fraks
Сообщения: 26
Зарегистрирован: 06.04.2022 11:27:22

Re: Помогите создать запрос

Сообщение fraks »

Название таблицы "Вася_Пупкин" говорит что никакой базы нет.
Все поля имеют тип VARCHAR(1024) что означает "я понятия не имею что такое типы данных"
Отсутствие первичного ключа означает "я ничего не читал про реляционные базы данных"
Все поля NULLable говорят что "я понятия не имею что такое NULL и как с ним жить"
На каждый приход по новой колонке говорит что "я работал только с Excel а базы данных вижу в первый раз"


Нет смысла строить запрос при таких исходных данных.
Последний раз редактировалось fraks 20.01.2023 05:19:47, всего редактировалось 1 раз.
fraks
Сообщения: 26
Зарегистрирован: 06.04.2022 11:27:22

Re: Помогите создать запрос

Сообщение fraks »

Справочник должен быть в отдельной таблице, приходы - в отдельной.
Примерно так:

Таблица Справочник
- Первичный ключ в этой таблице INTEGER NOT NULL PRIMARY KEY
- Наименование VARCHAR
- Ном № VARCHAR

Таблица Приходы:
- Первичный ключ в этой таблице INTEGER NOT NULL PRIMARY KEY
- Ссылка на первичный ключ в Справочник INTEGER NOT NULL FOREIGN KEY
- Дата DATE NOT NULL
- Цена NUMERIC NIY NULL
- Количество INTEGER NOT NULL

Вот по этой структуре уже можно будет строить какие-то осмысленные запросы.
Jurbanec
Сообщения: 2
Зарегистрирован: 16.01.2023 14:29:41

Re: Помогите создать запрос

Сообщение Jurbanec »

Спасибо. Только толку от этого Null.

Дай дельный совет!!!

Смысл не, как построена БД. А в выборе последнего динамического столбца.

Структура создания таблицы была взята с программы HeidiSQL. Родной исходник в запутанном для Вас виде.

Название таблицы "Вася_Пупкин" говорит что никакой базы нет.
... Таблица с другим именем на удалённом сервере (hts.ru).

Все поля имеют тип VARCHAR(1024) что означает "я понятия не имею что такое типы данных"
... к делу не относиться.

Отсутствие первичного ключа означает "я ничего не читал про реляционные базы данных"
... не было в необходимости. Дело вкуса.

Все поля NULLable говорят что "я понятия не имею что такое NULL и как с ним жить"
... при заполнения Б.Д. не которые строки пропускаются.

На каждый приход по новой колонке говорит что "я работал только с Excel а базы данных вижу в первый раз"
... Мне больше по душе LibreOffice в KDE.

100% у Вас установлен MS-DOS 10-11.

В вашем примере не нашел ответа на мою просьбу.
fraks
Сообщения: 26
Зарегистрирован: 06.04.2022 11:27:22

Re: Помогите создать запрос

Сообщение fraks »

Смысл не, как построена БД. А в выборе последнего динамического столбца.
Смысл в том что в sql нет понятия "динамический столбец".
Ответить