0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 11
1

Несколько значений в одной ячейке

18.03.2015, 02:06. Показов 17473. Ответов 39
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Для начала скажу, что искал тему по многим форумам но так и ничего не нашел.

Суть проблемы : пусть имеются две таблицы:
-- таб1Фильмы с полями
-----Код фильма,
-----название,
-----код жанра и

--таб2Жанры с полями
-----код жанра,
-----название жанра.

Одному фильму соответствует несколько жанров.
В таблице таб1Фильмы 10000 фильмов, в поле код жанра - число (пусть будет 5) , в таблице жанр1 коду=5 соответствует текстовая запись :"Ужас, триллер, Боевик".

В новой таблице таб3Жанр в каждой строке по одной записи, т.е. Боевик=5 Ужас=6 Триллер=7 .

Теперь вопрос : Как изменить таб1Фильмы чтоб связать с таб3 и на выходе получить то же самое?
Ведь в одной ячейке не напишешь три числа...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2015, 02:06
Ответы с готовыми решениями:

Несколько строк в одной ячейке
Как сделать чтобы в одной ячейке по нажатию Enter курсор не перепрыгивал на другую ячейку, а...

Несколько строк текста в одной ячейке
В строках есть такая штука, чего нет ни в одном другом типе данных - перенос на новую строчку. Как...

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

Несколько значений в одной ячейке
Добрый день уважаемые гуру excel. Столкнулся с такой проблемкой. Делаю табличку, в которой...

39
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
18.03.2015, 04:18 2
когда появляется такая ситуация то в схему базы данных вводят еще одну таблу (даже 2) в которой указывают жанр фильма (вторая табла справочник - где указаны жанры один раз)
а предоставление информации делают через запрос причем жанры можно собирать через функцию используя метод GetString ADODB рекордсета
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
18.03.2015, 05:18 3
Лучший ответ Сообщение было отмечено wolf300 как решение

Решение

Пример во вложении. Дополнительная таблица Фильмы_Жанры2, заполняется функцией FRM_FJ2.
Вложения
Тип файла: zip Фильмы_Жанры.zip (24.5 Кб, 231 просмотров)
1
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
18.03.2015, 07:33 4
ltv_1953, зачем гонять цикл если есть метод
Visual Basic
1
2
3
4
5
6
Public function DSumStr() as String
Dim rst As ADODB.Recordset 
Set rst = New ADODB.Recordset 
rst.Open "SELECT Клиенты.ФИО FROM Клиенты", CurrentProject.Connection, adOpenStatic, adLockReadOnly 
DSumStr = Replace(rst.GetString, Chr(13), "; ") 
end function
0
Эксперт MS Access
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
Вложения
Тип файла: rar Фильмы_Жанры.rar (24.6 Кб, 175 просмотров)
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
18.03.2015, 08:28 7
ТС нужно решить обратную задачу:
Цитата Сообщение от wolf300 Посмотреть сообщение
в таблице жанр1 коду=5 соответствует текстовая запись :"Ужас, триллер, Боевик".
В новой таблице таб3Жанр в каждой строке по одной записи, т.е. Боевик=5 Ужас=6 Триллер=7 .
То, что делает запрос1 уже есть (таблица Жанры1), а нужно создать по ним записи в подчиненной Фильмы_Жанры2 по таблице Жанры2.
0
4064 / 1445 / 399
Регистрация: 07.08.2013
Сообщений: 3,616
18.03.2015, 08:36 8
наверное я не правильно понял задачу
как мне показалось нужно из нормализованной бд получить результат
оказывается наоборот надо из не нормализованной получить нормализованную

где ТС - пусть объяснит получше чего хочет
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
18.03.2015, 08:43 9
Цитата Сообщение от wolf300 Посмотреть сообщение
Как изменить таб1Фильмы чтоб связать с таб3 и на выходе получить то же самое?
Ведь в одной ячейке не напишешь три числа...
Все уже написано ... .
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
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
08.04.2015, 06:47 12
Цитата Сообщение от adislav Посмотреть сообщение
нужен какой-либо метод или макрос, позволяющий ЕЩЕ в CSV "размножить" строки документа таким образом, чтоб в каждой ячейке (или в указанных ячейках) осталось не более одного значения
И причем здесь Аксесс? Для обработки тестовых файлов есть много других вариантов. Можно, конечно, в Аксессе такой файл обработать и записать в таблицу, потом экспорт в CSV, но зачем.
0
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
08.04.2015, 07:52 13
access при том, что данные из csv потом будут импортироваться в базу данных
при этом я не исключаю, что access умеет правильно обрабатывать подобные значения, просто я об этом не знаю или этого не умею))
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
08.04.2015, 08:10 14
Цитата Сообщение от adislav Посмотреть сообщение
access при том, что данные из csv потом будут импортироваться в базу данных
Цитата Сообщение от adislav Посмотреть сообщение
нужен какой-либо метод или макрос, позволяющий ЕЩЕ в CSV "размножить" строки документа таким образом, чтоб в каждой ячейке (или в указанных ячейках) осталось не более одного значения

Не по теме:

Вы либо крестик снимите ...

0
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
08.04.2015, 08:18 15
согласен)
но поставил вопрос именно таким образом, потому что, если данные обрабатываются "предварительно" еще в виде текста, результат обработки легче просмотреть
но не суть)
решение есть или проблема только в моих формулировках?)
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
08.04.2015, 09:04 16
Цитата Сообщение от adislav Посмотреть сообщение
решение есть или проблема только в моих формулировках?)
Решение изложено выше Несколько значений в одной ячейке - основное в нем - использование функции Split. Все.

Добавлено через 16 минут
На всякий случай уточняю. Из таблицы
НазваниеАвторЗначение
н1а1, а2, а3з1, з2, з3
н2а1,а2з1, з2, з3
н3а1, а2, а3з1, з2
нужно получить
КодНазваниеАвторЗначение
1н1а1з1
2н1а2з2
3н1а3з3
4н2а1з1
5н2а2з2
6н2 з3
7н3а1з1
8н3а2з2
9н3а3 
0
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 15
09.04.2015, 00:04 17
упс(
спасибо, конечно)
но я не настолько силен в коде, чтоб правильно и корректно именно это решение применять на практике
насколько я понял, нужно открыть приведенный выше пример, извлечь из него тест модуля и затем создать аналогичный в своей базе
затем нужно переписать названия таблиц\ячеек соответственно тем, которые используются в моем случае
с этой задачей, если долго помучиться, я наверняка справлюсь
но! если предположить, что у меня таких таблиц будет не 2 , а 3 или 4, то я наверняка запутаюсь(
нет ли более "кнопочного" варианта? (ну, когда не в коде все прописывается, а в каком-то визуальном построителе просто указываются столбцы для требуемой процедуры, а дальше "всё само")
0
Эксперт MS Access
17486 / 7248 / 1651
Регистрация: 21.06.2012
Сообщений: 13,863
09.04.2015, 02:55 18
Нет.

Добавлено через 15 минут
Цитата Сообщение от adislav Посмотреть сообщение
если предположить, что у меня таких таблиц будет не 2 , а 3 или 4, то я наверняка запутаюсь

Не по теме:

"Первую тысячу лет трудно, а потом привыкаешь." (Р.Ш.)

0
VinniPuh
09.04.2015, 08:42
  #19

Не по теме:

Цитата Сообщение от ltv_1953 Посмотреть сообщение
..."Первую тысячу лет трудно, а потом привыкаешь." (Р.Ш.)...
Что, Упрямится? :jokingly:
Не хочет так как нана, а хочет так как хотся?

0
ltv_1953
09.04.2015, 08:52     Несколько значений в одной ячейке
  #20

Не по теме:

Угу. «А хочу быть владычицей морскою … И была бы у меня (рыбка золотая) на посылках»

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2015, 08:52

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

Суммирование несколько значений чисел находящиеся в одной ячейке
https://www.cyberforum.ru/attachment.php?attachmentid=1004964&stc=1&d=1548227450 Всем доброго...

Суммирование несколько значений чисел находящиеся в одной ячейке
https://www.cyberforum.ru/attachment.php?attachmentid=1004964&stc=1&d=1548227450 Всем доброго...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru