powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
9 сообщений из 9, страница 1 из 1
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39244454
alpha348
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, имеются 3 таблицы. В таблице 1 в текстовом поле(utf8_general_ci) хранится массив, каждый элемент разделен на 2 части двоеточием. 1я часть это id из таблицы 2, 2я часть это id из таблицы 3.
[img='Mysql.jpg']
Нужно сделать выборку одним запросом из трех таблиц, данные из таблицы 2 и таблицы 3, должны соответствовать последним 10 элементам массива поля array. Название таблицы 3 может быть разным т.е. вместо таблицы 3 будет несколько таблиц одинаковой структуры.
Вот что нашёл по данному вопросу:
http://vexell.ru/2010/10/mysql-implode-explode/
http://stackoverflow.com/questions/5928599/equivalent-of-explode-to-work-with-strings-in-mysql
Но все равно не могу сообразить как это сделать, подскажите пожалуйста!
(Важно сделать выборку одним запросом)
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39244460
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вытащить последние 10 элементов - читать про reverse, locate, substring
Взять отдельный элемент (и субэлемент) - читать про substring_index там же.
Прицепить данные из других таблиц - читать про JOIN.
Прицепить данные из других таблиц с неопределёнными именами - читать про prepared statements, а лучше выдернуть руки проектировщика оттуда, откуда они у него растут, и поставить туда, откуда они растут у нормальных людей.
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39244505
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alpha348,

интересно это реальная задача или шутка преподавателя....

А количество пар значений в строке (как и полей в табл 2 и 3) я так понимаю все же конкретное число?
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245208
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alpha348, имеются 3 таблицы. В таблице 1 в текстовом поле(utf8_general_ci) хранится массив, каждый элемент разделен на 2 части двоеточием. 1я часть это id из таблицы 2, 2я часть это id из таблицы 3.

(Важно сделать выборку одним запросом)

Вот с этого место поподробнее...

Хранение массива в поле - это нарушение 1НФ, грубая ошибка в проектировании. Конечно, тебя не расстреляют, но одним запросом это никак не сделать, тем более что в MySQL не придерживаються массивы внутри СУБД...
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245230
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что мешает пойти по пути нормализации первой таблицы? отконвертировать её во вменяемы формат, а потом простейшими запросами получать требуемое.
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245246
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv[
Хранение массива в поле - это нарушение 1НФ, грубая ошибка в проектировании. Конечно, тебя не расстреляют, но одним запросом это никак не сделать, тем более что в MySQL не придерживаються массивы внутри СУБД...
1) не обязательно, может в базе хранится именно последовательность?
2) через рег. выражения могло бы и получится (join делать по регулярке)
3) но на начальном этапе я бы сняла ограничение одного запроса :)
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245311
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabMasterZiv[
Хранение массива в поле - это нарушение 1НФ, грубая ошибка в проектировании. Конечно, тебя не расстреляют, но одним запросом это никак не сделать, тем более что в MySQL не придерживаються массивы внутри СУБД...
1) не обязательно, может в базе хранится именно последовательность?


там вроде все описано, все однозначно плохо.

2) через рег. выражения могло бы и получится (join делать по регулярке)

убить производительность на корню?
ну, для 1000 записей работать будет, да..

3) но на начальном этапе я бы сняла ограничение одного запроса :)

я кстати подумал как можно сделать, идея безумная, но очень прикольная, и реляционная на 100%, потом напишу...
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245955
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivно одним запросом это никак не сделатьЕсли известно максимальное количество элементов в поле, то можно. И регулярки для этого не нужны.
...
Рейтинг: 0 / 0
Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
    #39245968
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Регулярки тут вообще ни к месту - всё равно ими не получится выкроить кусок из значения поля для дальнейшей обработки. А если в запрос воткнуть синтетическую таблицу, производящую числа от 1 до 10, то вполне хватит и встроенных текстовых функций. А о производительности на такой структуре заикаться можно даже не начинать.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сделать выборку из 3 таблиц одним запросом используя массив находящийся в первой таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]