Вверх ↑
Этот топик читают: Гость
Ответов: 12
Рейтинг: 0
#1: 2014-07-14 00:50:02 ЛС | профиль | цитата
Здравствуйте. У меня замерз проект на стадии разработки. А именно, нужен запрос для выяснения имени таблицы по ее содержимому.
Запрос типа: select name from sqlite_master where '%2'=(select tabname from '%1' where number=1);
не работает. %1-это имена всех таблиц в базе, %2-это одно из содержимого таблицы.

Может кто что подскажет?
карма: 0

0
Ответов: 824
Рейтинг: 138
#2: 2014-07-14 01:05:36 ЛС | профиль | цитата
Почитать про вложенные запросы
Или Вложенный запрос доложен выдавать сугубо ОДНО значение, но не "%1-это имена всех таблиц в базе"
карма: 1

0
Ответов: 12
Рейтинг: 0
#3: 2014-07-14 01:12:13 ЛС | профиль | цитата
Спасибо за ответ. Читал, пробовал, не отрабатывает. У меня немного другая задача: Таблиц в бд может быть 1000, а мне из всех надо найти одну таблицу с определенным содержимым и вывести в поток ее имя. Повторение содержимого исключено.
карма: 0

0
Ответов: 824
Рейтинг: 138
#4: 2014-07-14 01:19:51 ЛС | профиль | цитата
И что это за такая база на SQLite аж на 1000 таблиц?????
карма: 1

0
Ответов: 12
Рейтинг: 0
#5: 2014-07-14 01:25:01 ЛС | профиль | цитата
Соревнования. Каждая таблица отдельная категория. НУ может с тысячей я перегнул, но смысл понятен.
карма: 0

0
Ответов: 824
Рейтинг: 138
#6: 2014-07-14 01:45:15 ЛС | профиль | цитата
Что-то с Вашей базой не так, это явно!
Хотя-бы опишите приблизительно структуру Ваших таблиц.


------------ Дoбавленo в 01.45:
BerLin писал(а):
но смысл понятен.
Смысл - где? В чем? Не понятно!
карма: 1

1
Голосовали:Tad
Ответов: 12
Рейтинг: 0
#7: 2014-07-14 02:10:47 ЛС | профиль | цитата
На каждую категорию создается отдельная таблица:

CREATE TABLE tab%1 (number int, firstname char, lastname char, alt char, city char, land char, gewicht char, rang char, tabname char, round1 int, round2 int, round3 int, round4 int, round5 int)


Названия категории мы берем из таблицы и составляем дерево элементов.
После выделяем название категории в дереве и вставляем в тот запрос, который нужен, чтоб понять в какой таблице нам делать изменения.

Вот как то так.
------------ Дoбавленo в 01.52:
Смысл в том, что таблиц много.
------------ Дoбавленo в 02.10:
Все уже сделано, осталось дело только за одним запросом.
карма: 0

0
файлы: 1code_33993.txt [202B] [73]
Ответов: 824
Рейтинг: 138
#8: 2014-07-14 02:16:55 ЛС | профиль | цитата
Что такое "Категория"?
Это -:
  • весовая категория
  • категория упитанности кур
  • категория качества зернових
  • категория кабеля
  • категория допуска КИПовца
  • ..... ?????

Как говорится "Ошибка 0x03E2 Нет доступа к дополнительным атрибутам."
карма: 1

0
Ответов: 12
Рейтинг: 0
#9: 2014-07-14 02:33:48 ЛС | профиль | цитата
Например: "Юноши 15-18 лет 40-45 кг"
------------ Дoбавленo в 02.30:
К сожалению не могу тут выложить базу.
------------ Дoбавленo в 02.33:
Обычные соревнования по олимпийской системе. А это важно?

карма: 0

0
Ответов: 16884
Рейтинг: 1239
#10: 2014-07-14 10:22:31 ЛС | профиль | цитата
BerLin писал(а):
Запрос типа:
select --
name -- имя таблицы
from sqlite_master -- из sqlite_master
where '%2'-- %2-это одно из содержимого таблицы (которого и близко нет в sqlite_master )
=
(
select tabname from '%1' where number=1);
не работает. %1-это имена всех таблиц в базе, %2-это одно из содержимого таблицы.
Переведи запрос на русский язык - поймёшь его абсурдность.
BerLin писал(а):
На каждую категорию создается отдельная таблица
Нафига ? Человек всё время меняется - переходит из категории в категорию. Имея таблицу "Список спортсменов",(примерно такую)
CREATE TABLE athletes(
id INTEGER PRIMARY KEY, -- индивидуальный номер спортсмена
fam TEXT, -- фамилия
im TEXT, -- имя
ot TEXT, -- отчество
rDate INTEGER -- дата рождения
-- и т.д.);
всегда можно определить(вычислить) его возрастную категорию.

Когда тебя просят
sashaoli писал(а):
Хотя-бы опишите приблизительно структуру Ваших таблиц.
не надо отвечать загадками, понятными только тебе, типа
CREATE TABLE tab%1 (
number int, -- это чей номер ? номер чего ?
firstname char,
lastname char,
alt char, -- это что?
city char,
land char,
gewicht char, -- это что?
rang char, -- это что?
tabname char,
round1 int, -- это что?
round2 int, -- это что?
round3 int, -- это что?
round4 int, -- это что?
round5 int -- это что?
)
А наличие round1..round5 - вообще наталкивает на грустные мысли.

------------ Дoбавленo в 10.22:
BerLin писал(а):
К сожалению не могу тут выложить базу.
И не надо
sashaoli писал(а):
Что-то с Вашей базой не так, это явно!

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 12
Рейтинг: 0
#11: 2014-07-15 02:33:57 ЛС | профиль | цитата
CREATE TABLE tab%1 (
number int, -- это номер записи в таблице, номер участника
firstname char,
lastname char,
alt char, -- возраст
city char,
land char,
gewicht char, -- вес
rang char, -- уровень бойца
tabname char,
round1 int, -- это для записи результатов, 1/8 финала и т.д.
round2 int, --
round3 int, --
round4 int, --
round5 int --
)

Мда, видимо придется все переделывать сначала. Я только начинаю познавать HiASM, видимо так как хотел у меня не получится.
карма: 0

0
Ответов: 824
Рейтинг: 138
#12: 2014-07-15 13:01:53 ЛС | профиль | цитата
BerLin писал(а):
видимо так как хотел у меня не получится.

Объясните, что Вы хотели, что должно получится.
Поставьте правильно задачу (изложите свои мысли здесь, входящие данные, исходящие данные и т.п.) и Вам постараются помочь.
карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#13: 2014-07-15 15:02:49 правка | ЛС | профиль | цитата


Редактировалось 1 раз(а), последний 2017-03-05 00:42:47
карма: 0

0
Ответов: 12
Рейтинг: 0
#14: 2014-07-15 15:13:09 ЛС | профиль | цитата
Ок! Пытаюсь сделать программу для проведения соревнований. Есть толпа спортсменов, которые делятся по категориям. Соревнования по олимпийской и круговой (когда каждый участник с каждым другим участником бьется. Например три участника: Иванов, Петров, Сидоров. Иванов бьется с Петровым и Сидоровым; Петров с Ивановым и Сидоровым; Сидоров с Ивановым и Петровым и победитель выяснятся по большему количеству побед) системам. Изначально создаются категории, в категории заносятся участники и очередность боёв. При проведении боев девушки-операторы указывают победивших, программа сама продвигает бойца по сетке дальше к финалу. Пример на картинке.


Нужна возможность переходить между категориями и сохранять результаты. Отдельно окно, на котором крупными буквами выводятся имена участников и номер боя. Вот так как то в общих чертах.

Буду очень благодарен за любую помощь.
карма: 0

0
Ответов: 4630
Рейтинг: 749
#15: 2014-07-15 16:39:24 ЛС | профиль | цитата
Для начала нужно придумать структуру таблиц. Для данных с одинаковой структурой не нужно создавать отдельные таблицы (например, для категорий)

Например, таблицы и их поля:

1) Участники (Members)
id
first_name
last_name
category_id - в этом поле будет хранится значение Categories.id, к которой принадлежит участник, из таблицы категорий.
....

2) Категории участников (Categories)
id
min_weight
max_weight
....

3) Программа боёв - кто с кем бьётся (Rounds)
id
number - если требуется своя нумерация раундов
category_id - идентификатор категории, для которой назначен этот раунд (Categories.id)
first_fighter_id - идентификатор первого участника в раунде (Members.id участника)
second_fighter_id - идентификатор второго участника
winner_id - идентификатор победившего в раунде участника
....

Соответственно потом можно и делать запросы для работы с базой. Например:
1) Получить список участников в категории 1
select * from Members where category_id=1

2) Получить список раундов и их участников для категории 1
select r.number, m1.first_name, m1.last_name, m2.first_name, m2.last_name
from rounds r
join members m1 on m1.id=r.first_fighter_id
join members m2 on m2.id=r.second_fighter_id
where r.category_id=1

3) Получить список победителей в раундах каждой из категорий:
select c.id, r.number, m.first_name, m.last_name
from categories c
join rounds r on r.category_id
join members m on m.id = r.winner_id

И так далее.

карма: 26

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)