Здравствуйте. У меня замерз проект на стадии разработки. А именно, нужен запрос для выяснения имени таблицы по ее содержимому.
Запрос типа: select name from sqlite_master where '%2'=(select tabname from '%1' where number=1);
не работает. %1-это имена всех таблиц в базе, %2-это одно из содержимого таблицы.
Может кто что подскажет?
Этот топик читают: Гость
Ответов: 12
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 824
Рейтинг: 138
|
|||
Почитать про вложенные запросы
Или Вложенный запрос доложен выдавать сугубо ОДНО значение, но не "%1-это имена всех таблиц в базе" |
|||
карма: 1 |
|
Ответов: 12
Рейтинг: 0
|
|||
Спасибо за ответ. Читал, пробовал, не отрабатывает. У меня немного другая задача: Таблиц в бд может быть 1000, а мне из всех надо найти одну таблицу с определенным содержимым и вывести в поток ее имя. Повторение содержимого исключено.
|
|||
карма: 0 |
|
Ответов: 824
Рейтинг: 138
|
|||
И что это за такая база на SQLite аж на 1000 таблиц?????
|
|||
карма: 1 |
|
Ответов: 12
Рейтинг: 0
|
|||
Соревнования. Каждая таблица отдельная категория. НУ может с тысячей я перегнул, но смысл понятен.
|
|||
карма: 0 |
|
Ответов: 824
Рейтинг: 138
|
|||
Что-то с Вашей базой не так, это явно!
Хотя-бы опишите приблизительно структуру Ваших таблиц. ------------ Дoбавленo в 01.45: BerLin писал(а): но смысл понятен. |
|||
карма: 1 |
| ||
Голосовали: | Tad |
Ответов: 12
Рейтинг: 0
|
|||
На каждую категорию создается отдельная таблица:
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 |
| ||
файлы: 1 | code_33993.txt [202B] [73] |
Ответов: 824
Рейтинг: 138
|
|||
Что такое "Категория"?
Это -:
Как говорится "Ошибка 0x03E2 Нет доступа к дополнительным атрибутам." |
|||
карма: 1 |
|
Ответов: 12
Рейтинг: 0
|
|||
Например: "Юноши 15-18 лет 40-45 кг"
------------ Дoбавленo в 02.30: К сожалению не могу тут выложить базу. ------------ Дoбавленo в 02.33: Обычные соревнования по олимпийской системе. А это важно? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
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 (
А наличие round1..round5 - вообще наталкивает на грустные мысли.
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 в 10.22: BerLin писал(а): К сожалению не могу тут выложить базу.sashaoli писал(а): Что-то с Вашей базой не так, это явно! |
|||
карма: 25 |
|
Ответов: 12
Рейтинг: 0
|
|||
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 |
|
Ответов: 824
Рейтинг: 138
|
|||
BerLin писал(а): видимо так как хотел у меня не получится.Объясните, что Вы хотели, что должно получится. Поставьте правильно задачу (изложите свои мысли здесь, входящие данные, исходящие данные и т.п.) и Вам постараются помочь. |
|||
карма: 1 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 1 раз(а), последний 2017-03-05 00:42:47 |
|||
карма: 0 |
|
Ответов: 12
Рейтинг: 0
|
|||
Ок! Пытаюсь сделать программу для проведения соревнований. Есть толпа спортсменов, которые делятся по категориям. Соревнования по олимпийской и круговой (когда каждый участник с каждым другим участником бьется. Например три участника: Иванов, Петров, Сидоров. Иванов бьется с Петровым и Сидоровым; Петров с Ивановым и Сидоровым; Сидоров с Ивановым и Петровым и победитель выяснятся по большему количеству побед) системам. Изначально создаются категории, в категории заносятся участники и очередность боёв. При проведении боев девушки-операторы указывают победивших, программа сама продвигает бойца по сетке дальше к финалу. Пример на картинке.
Нужна возможность переходить между категориями и сохранять результаты. Отдельно окно, на котором крупными буквами выводятся имена участников и номер боя. Вот так как то в общих чертах. Буду очень благодарен за любую помощь. |
|||
карма: 0 |
|
Ответов: 4630
Рейтинг: 749
|
|||
Для начала нужно придумать структуру таблиц. Для данных с одинаковой структурой не нужно создавать отдельные таблицы (например, для категорий)
Например, таблицы и их поля: 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 |
|