Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464

Выборка из нескольких таблиц БД

18.02.2012, 15:00. Показов 1674. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте.
Такая ситуация. Есть база данных MySQL, в которой имеется около 20 таблиц, каждая из которых соответствует определенной категории. Структура этих таблиц одинакова:
Code
1
id|...|data
При чем параметр id уникален только для своей таблицы. Data - дата добавления определенной записи.
Мне нужно на главной странице вывести список, состоящий из n последних записей. Проблема в том, что они могут быть раскиданы по разным таблицам. Дайте совет по решению этой проблемы
P.S. Можно просматривать все 20 таблиц при выводе, но это ресурсоемкое занятие.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2012, 15:00
Ответы с готовыми решениями:

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

Выборка из нескольких таблиц
-- -- Структура таблицы `orders` -- CREATE TABLE IF NOT EXISTS `orders` ( `idorder` int(10) unsigned NOT NULL AUTO_INCREMENT, ...

выборка с нескольких таблиц
вот к примеру у меня есть 4 таблицы и в них всех есть колонки с названием word, мне нужно чтобы со всех таблиц все значения поля word были...

4
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
18.02.2012, 15:44
А не проще переделать БД... Поскольку возникла такая проблема, то подозреваю, что она не правильно создана...

Чтобы не ждать ответа, на случай, если я прав, то лучше сразу переделать БД. Вот что я думаю...
У этих 20 таблицах хранятся одинаковые данные, расбросаны по категориям... Для примера, в первой таблице уроки по программированию на Си, во второй - на С++, в третьей - по PHP и т. д.
Это распостраненная ошибка новачков... Правильно сделать одну таблицу, в которую добавить поле категории...
id | cat_id | ... | data
И выборку будет сделать проще, и не будет нарушения правил
0
 Аватар для galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
18.02.2012, 16:13  [ТС]
Цитата Сообщение от Jallik Lich Посмотреть сообщение
А не проще переделать БД... Поскольку возникла такая проблема, то подозреваю, что она не правильно создана...
Переделать-то можно, так как все находится в начальной стадии разработки

Цитата Сообщение от Jallik Lich Посмотреть сообщение
Это распостраненная ошибка новачков... Правильно сделать одну таблицу, в которую добавить поле категории...
id | cat_id | ... | data
Понимаю. Однако мне этот вариант не совсем подходит, т.к. в дальнейшем структура некоторых таблиц может поменяться (извиняюсь, что не упомянул об этом в первом посте).

Также рассматривал такой вариант: создать отдельную таблицу "last_news" (из названия понятно) и выводть все из нее. Но в дальнейшем она может стьать довольно большой, поэтому придется удалять старые записи из нее, что скажется на функционале сайта. Рассматриваюто как запасной вариант.
0
Исследователь
 Аватар для Jallik Lich
196 / 175 / 13
Регистрация: 30.10.2011
Сообщений: 605
Записей в блоге: 7
18.02.2012, 16:36
Размышляю "вслух", может это натолкнет на мысль...

Как вариант, можно просматривать все 20 таблиц... Мда... Ресурсов это сожрёт не мало... Можно, конечно, выбрать n последних записей из каждой таблицы и уже из них выбрать n последних... Нет Хватит мучить ЭВМ...

Создать еще одну таблицу, в которой хранить последние записи?.. Хм-м... Если в этой таблице хранить id и название таблицы с новостью, то она не так уж и сильно будет ресурсоемкой... а если её еще и переодически чистить, то дела пойдут не так уж и плохо... Оставим как вариант...

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

А что, если сделать id уникальным полем для всех таблиц, а не для одной?.. Хех... Таким образом, последние записи будут с самыми большими id... Но опять же проблема, с поиском самого большого id... Придется где-то его хранить... Куки и сессии для этого не подходят, это однозначно... Создавать еще одну таблицу для самого большого id? Таблицу с одним полем... А смысл? Ладно, допустим, что мы где-то сохранили (или как то определили) самый большой id... Определить все id можно, если записи не удалялись... Если несколько полей выпадут, значит простым вычитанием ничего хорошего мы не получим... Придется где-то хранить еще и записи, которые удалили... Слишком много мучений...

Вот моё краткое мнение по поводу решения поставленой задачи... Может они подтолкнут Вас на какую то мысль
1
 Аватар для galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
18.02.2012, 17:21  [ТС]
Хех, спасибо Вот мои мысли по этому поводу.

Цитата Сообщение от Jallik Lich Посмотреть сообщение
Создать еще одну таблицу, в которой хранить последние записи?.. Хм-м... Если в этой таблице хранить id и название таблицы с новостью, то она не так уж и сильно будет ресурсоемкой... а если её еще и переодически чистить, то дела пойдут не так уж и плохо... Оставим как вариант...
Вариант неплохой. Но, скажем, если, время от времени удаляя старые записи, придется вывести n записей, где n больше, чем кол-во записей в этой таблице, то возникнут сложности. Хотя такое развитие событий и мало верятно.

Цитата Сообщение от Jallik Lich Посмотреть сообщение
А что, если сделать id уникальным полем для всех таблиц, а не для одной?
В таком случае придется перебирать все таблицы или опять же что-то придумывать.

Пока идея с созданием новой таблицы является наиболее актуальной для меня. Но все равно продолжаю поиски вариантов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2012, 17:21
Помогаю со студенческими работами здесь

Выборка из нескольких таблиц, связанных по ID
Здравствуйте! В инете ничего толкового не нашёл в ответ на свой вопрос, поэтому задаю вопрос здесь. Есть 3 таблицы (к примеру): section...

Выборка из нескольких таблиц с JOIN
всем привет. есть 3 таблицы. как правильно выбрать все классы для препода с id = 1(или с id = 2, c условием WHERE) и его...

Выборка одновременно из нескольких таблиц с сортировкой
Добрый всем. Так вот делаю я запрос SELECT * FROM feed,media WHERE media.user_id = '1' AND feed.user_id = '1' AND media.user_id =...

Выборка из нескольких таблиц с отображением последней записи
Доброго всем времени суток! Есть несколько связанных таблиц, отвечающих за переписку пользователей. Для выборки списка переписок, в...

Выборка из нескольких таблиц БД для поиска на сайте
Здравствуйте уважаемые пользователи форума .Подскажите как сделать выборку из нескольких таблиц в БД для поиска на сайте.Моя выборка ищет...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
ПЛИС
zxcha1ka_ 27.01.2026
AHDL Разработать программы для синтеза следующих устройств: 1. Параллельного регистра 4-х разрядного с синхронной загрузкой и асинхронным сбросом (обнулением); Пoмoгитe пoжaлyйстa
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru