0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 11
|
|
1 | |
Несколько значений в одной ячейке18.03.2015, 02:06. Показов 17473. Ответов 39
Метки нет (Все метки)
Доброго времени суток!
Для начала скажу, что искал тему по многим форумам но так и ничего не нашел. Суть проблемы : пусть имеются две таблицы: -- таб1Фильмы с полями -----Код фильма, -----название, -----код жанра и --таб2Жанры с полями -----код жанра, -----название жанра. Одному фильму соответствует несколько жанров. В таблице таб1Фильмы 10000 фильмов, в поле код жанра - число (пусть будет 5) , в таблице жанр1 коду=5 соответствует текстовая запись :"Ужас, триллер, Боевик". В новой таблице таб3Жанр в каждой строке по одной записи, т.е. Боевик=5 Ужас=6 Триллер=7 . Теперь вопрос : Как изменить таб1Фильмы чтоб связать с таб3 и на выходе получить то же самое? Ведь в одной ячейке не напишешь три числа...
0
|
18.03.2015, 02:06 | |
Ответы с готовыми решениями:
39
Несколько строк в одной ячейке Несколько строк текста в одной ячейке Несколько значений в одной ячейке Несколько значений в одной ячейке |
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
|
|
18.03.2015, 04:18 | 2 |
когда появляется такая ситуация то в схему базы данных вводят еще одну таблу (даже 2) в которой указывают жанр фильма (вторая табла справочник - где указаны жанры один раз)
а предоставление информации делают через запрос причем жанры можно собирать через функцию используя метод GetString ADODB рекордсета
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
18.03.2015, 05:18 | 3 |
Сообщение было отмечено wolf300 как решение
Решение
Пример во вложении. Дополнительная таблица Фильмы_Жанры2, заполняется функцией FRM_FJ2.
1
|
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
|
||||||
18.03.2015, 07:33 | 4 | |||||
ltv_1953, зачем гонять цикл если есть метод
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
18.03.2015, 07:42 | 5 |
Причем здесь это.
В цикле добавляются записи в таблицу фильмы - новые жанры. Есть рабочий вариант без цикла по ТЗ ТС - выкладывайте, будем посмотреть.
0
|
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
|
|
18.03.2015, 08:06 | 6 |
вот на основе вашей базы
см. Запрос1
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
18.03.2015, 08:28 | 7 |
ТС нужно решить обратную задачу:
То, что делает запрос1 уже есть (таблица Жанры1), а нужно создать по ним записи в подчиненной Фильмы_Жанры2 по таблице Жанры2.
0
|
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
|
|
18.03.2015, 08:36 | 8 |
наверное я не правильно понял задачу
как мне показалось нужно из нормализованной бд получить результат оказывается наоборот надо из не нормализованной получить нормализованную где ТС - пусть объяснит получше чего хочет
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
18.03.2015, 08:43 | 9 |
0
|
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 11
|
|
18.03.2015, 16:21 [ТС] | 10 |
Спасибо, ltv_1953 ! Ну и snipe за вариант. Все работает.
0
|
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
|
|
07.04.2015, 20:06 | 11 |
господа знатоки!
дабы не создавать новую тему с очень похожей задачей, решил задать вопрос в уже имеющейся итак: 1. работаю над одним личным проектом, где хотелось бы в конце концов объединить данные по фильмам, книгам, музыке, авторам этих произведений и различных изданий в новой базе с чуть другой и нужной именно мне логикой связи между таблицами и персонами 2. исходные данные в зависимости от метода их получения хранятся в различных базах данных (access, sqlite, xml и др). единственный универсальный формат импорта\экспорта, который позволяет извлекать эти данные из источника или обмениваться этими данными - csv. (теоретически все умеют работать с excel, но иногда возникает надобность работать с миллионами строк, потому excel малопригоден для моих задач) 3. часть извлекаемых данных (как и в случае, описанном топикстартером) содержит перечисления через запятую множественных значений в одной ячейке (актеры, режиссеры, страны и тд) при этом нередки случаи, когда таких значений в ячейке может быть несколько тысяч ЗАДАЧА: 1. нужен какой-либо метод или макрос, позволяющий ЕЩЕ в CSV "размножить" строки документа таким образом, чтоб в каждой ячейке (или в указанных ячейках) осталось не более одного значения при этом значения ячеек, по которым будет строиться импорт в базу (первичные и внешние ключи) должны продублироваться в каждую из строк 2. в качестве примитивного примера - имеем: | название | автор1, автор2 | значение1, значение2, значение3 | получаем (примитивно): | название | автор1 | значение1 | | название | автор2 | значение2 | | название | пусто | значение3 | = сумеет кто-то помочь?
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
08.04.2015, 06:47 | 12 |
И причем здесь Аксесс? Для обработки тестовых файлов есть много других вариантов. Можно, конечно, в Аксессе такой файл обработать и записать в таблицу, потом экспорт в CSV, но зачем.
0
|
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
|
|
08.04.2015, 07:52 | 13 |
access при том, что данные из csv потом будут импортироваться в базу данных
при этом я не исключаю, что access умеет правильно обрабатывать подобные значения, просто я об этом не знаю или этого не умею))
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
08.04.2015, 08:10 | 14 |
0
|
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
|
|
08.04.2015, 08:18 | 15 |
согласен)
но поставил вопрос именно таким образом, потому что, если данные обрабатываются "предварительно" еще в виде текста, результат обработки легче просмотреть но не суть) решение есть или проблема только в моих формулировках?)
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
08.04.2015, 09:04 | 16 | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Решение изложено выше Несколько значений в одной ячейке - основное в нем - использование функции Split. Все.
Добавлено через 16 минут На всякий случай уточняю. Из таблицы
0
|
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
|
|
09.04.2015, 00:04 | 17 |
упс(
спасибо, конечно) но я не настолько силен в коде, чтоб правильно и корректно именно это решение применять на практике насколько я понял, нужно открыть приведенный выше пример, извлечь из него тест модуля и затем создать аналогичный в своей базе затем нужно переписать названия таблиц\ячеек соответственно тем, которые используются в моем случае с этой задачей, если долго помучиться, я наверняка справлюсь но! если предположить, что у меня таких таблиц будет не 2 , а 3 или 4, то я наверняка запутаюсь( нет ли более "кнопочного" варианта? (ну, когда не в коде все прописывается, а в каком-то визуальном построителе просто указываются столбцы для требуемой процедуры, а дальше "всё само")
0
|
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
|
|
09.04.2015, 02:55 | 18 |
Нет.
Добавлено через 15 минут Не по теме: "Первую тысячу лет трудно, а потом привыкаешь." (Р.Ш.)
0
|
VinniPuh
|
09.04.2015, 08:42
#19
|
0
|
ltv_1953
|
09.04.2015, 08:52
Несколько значений в одной ячейке
#20
|
Не по теме: Угу. «А хочу быть владычицей морскою … И была бы у меня (рыбка золотая) на посылках»
0
|
09.04.2015, 08:52 | |
Несколько значений в одной ячейке таблицы Суммирование несколько значений чисел находящиеся в одной ячейке Суммирование несколько значений чисел находящиеся в одной ячейке Нужно сделать в одной ячейке,несколько значений и чтоб они по порядку участвовали в формуле Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |