powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы значений по индексу другой таблицы
33 сообщений из 33, показаны все 2 страниц
Выборка из таблицы значений по индексу другой таблицы
    #38640223
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Пример: Новостная лента с фотографиями, делаю запрос к базе
$result_set = $MySQLi->query("SELECT * FROM `news` ORDER BY `date` DESC LIMIT 10");
в этой базе есть столбец IMG по которому должны считываться значения из другой таблицы.
В данном примере я считываю последние 10 новостей и вывожу их на экран.
Задумка: Есть таблица `news` в которой записываются цифровые значения в поле IMG (могут повторяться), есть другая таблица, в которой по этим значениям считываются соответствующие значения в соответствующей строке.
Как сделать запрос ко второй таблице, чтобы не загружать её данные полностью
($result_set_img = $MySQLi->query("SELECT * FROM `news_img`;)
Как это лучше реализовать или какой лучше вариант использовать?
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640245
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял задачу, но похоже, что так:
Код: sql
1.
2.
3.
4.
SELECT * FROM
(SELECT * FROM `news` ORDER BY `date` DESC LIMIT 10) t
LEFT JOIN `news_img` ON t.img=`news_img`.id
order by t.`date`
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640252
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Попробую завтра с двойным SELECT.
Суть моей идеи чтобы новости были в одной таблице, а изображения к каждой новости в другой таблице. Сейчас я тупо кодом прописываю в поле ТЕКСТ ссылки на изображения.
Может есть более разумный вариант это реализовать, использую например только одну таблицу, не знаю
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640673
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается сделать такую выборку, чтобы в одном запросе были нужные данные и в правильной структуре. Придётся загружать массив с новостями и отдельно массив с фотографиями, не знаю будет ли это рационально. Буду для каждой новости проверять наличие фото и уже простым перебором добавлять в новость фото из другого массива.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640678
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисей,

Ну так вы объясните толком задачу. Где и как лежат данные и в каком виде нужно получить результат. Желательно с примерами.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640744
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Есть две таблицы, одна новости, другая изображения. У каждой новости есть свой imgid, по этому идентификатору ищутся значения в таблице Изображения и добавляются в новость все изображения с этим идентификатором
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640810
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал вот такой код для выбора нужных изображений
("SELECT * FROM news_img WHERE news_img.imgid IN (SELECT `imgid` FROM `news` ORDER BY `date` DESC LIMIT 10)")
но при $row_img = $result_set_img->fetch_assoc(); выдаёт ошибку, думаю ошибка в запросе, не могу понять где
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640823
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисейвыдаёт ошибкукоторую мы должны угадать? запрос на вид нормальный (откидываю в сторону вопросы оптимизации)
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640836
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисей, по данному запросу не получится считать 10 последних новостей и вывести их на экран (тем более если учитывать, что у разных новостей могут быть одинаковые картинки). Вы выбираете только информацию о картинках. miksoft написал нормальный запрос, зачем писать свою отсебятину, не понимаю однако...
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640840
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontaine,

не, всё правильно, это у ТС такие замысловатые названия полей.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640849
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontaine, другое дело, что запрос miksofta выведет не 10 строк а значительно больше (судя по картинке, в news_img для одной картинки может быть заполнено несколько строк), но эту проблему можно решить уже непосредственно в php
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640858
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, чё там замысловатого? новости хранятся в таблице news. Информация о картинке в таблице news_img. Всё понятно пока что.
Автор из таблицы новостей берёт id картинок прикреплённых к последним десяти новосям и ищёт в таблице картинок информацию об этих картинках. Это тоже всё прекрасно понятно.
Непонятно одно: а новости-то сами где в этом запросе?
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640865
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir, я не вижу в запросе автора заголовка новости, текста новости, даты создания новости. А в запрсое miksofta это всё есть
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640867
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineMr.Fontaine, другое дело, что запрос miksofta выведет не 10 строк а значительно больше (судя по картинке, в news_img для одной картинки может быть заполнено несколько строк), но эту проблему можно решить уже непосредственно в phpНа тот момент такой картинки еще не было, я полагал, что идентификатор картинки уникален.

Но теперь стало непонятным назначение поля `news`.`imgid`. Можно же картинки привязывать прямо к id новости.

Решить дублирование записей можно и в запросе. Главное понять, в каком виде должен быть результат.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640868
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

ошибка скорее всего в запросе, потому что при более простом запросе, ошибка не появляется
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640880
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНа тот момент такой картинки еще не было, я полагал, что идентификатор картинки уникален.

Но теперь стало непонятным назначение поля `news`.`imgid`. Можно же картинки привязывать прямо к id новости.

Решить дублирование записей можно и в запросе. Главное понять, в каком виде должен быть результат.
Полностю согласен, и как раз говорю, что Ваш запрос более приемлем, чем запрос автора. Естественно мы тут гадаем что вообще должно появиться. Особо популярный сегодня хрустальный шар подсказывает, что картинка привязана к новости в таблице news (не зря же там есть поле imgid), а в таблице news_img записаны в несколько строчек параметры картинки (может быть ширина, высота, описание картинки, которое надо вывести на страничку.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640887
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Я специально не стал привязывать АйДи новости (уникальный) к АйДи картинки. Это ведь не имеет значения сейчас (оптимизацию я сделаю позже).

Картинки у меня будут разные для одной новости. Для одной новости их может быть как одна, так и 20.

Сейчас задача состоит в том чтобы извлечь все изображения из 2 таблицы АйДи которых совпадает с АйДи в 1 таблице
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640893
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сейчас осознал, что это запрос Алисейдля выбора нужных изображений тут новостей и быть-то не должно. То есть работа строится через два запроса. Но тогда он вообще не понятен.
При использовании двух запросов по-моему единственный путь выбрать новости и в цикле по id картинки выбирать все параметры, нахрена там опять выбираются картинки для всех новостей да ещё и без distincta непонятно однако...
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640894
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алисей,

Вернее наоборот...извлечь изображения из таблицы ИЗО которые должны быть для последних 10 новостей по идентификатору
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640900
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисей,

Все еще остается непонятным, чем именно не угодил мой запрос?
Ваши фразы "не получается" и "выдает ошибку" никакой ясности не вносят.
Показывайте фактические результаты и сообщение об ошибке.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640911
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

по Вашему запросу у меня новость повторяется столько количество раз, сколько картинок во второй таблице. Сейчас попробую ещё раз изменить код PHP для вывода новости...
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640916
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисей, так же непонятно почему нельзя написать
Код: sql
1.
$result_set_img = $MySQLi->query("SELECT * FROM `news_img WHERE imgid=значение imgid из таблицы новостей для текущей новости`;


и также непонятно почему связь полей news.imgid=news_img.imgid не является привязкой новости к картинке(картинкам). А что же это тогда?
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640919
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

как я понимаю, Ваш запрос создаёт новый массив, допустим берём последние 10 новостей и если есть 3 картинки в другой таблице к 1 новости, то выводится 7 новостей и 3 повторяющихся. Дополнительно к этому у меня сбиваются индексы, для отображения новости полностью...буду переписывать код PHP в таком случае
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640921
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine,

всё правильно, это и есть привязка, пусть не по основному индексу, но привязка :-)
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640926
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Mr.Fontaine]Алисей, так же непонятно почему нельзя написать
Код: sql
1.
$result_set_img = $MySQLi->query("SELECT * FROM `news_img WHERE imgid=значение imgid из таблицы новостей для текущей новости`;


Можно и так, но тогда я так понимаю этот запрос нужно писать в цикле для каждой выводимой новости...это многочисленные обращения к базе, или я не так думаю?
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640928
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача вроде простая, может мне структуру самой таблицы или базы изменить? и хранить изображения (ссылки) прямо в таблице Новости? (как-то не очень вроде)
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640930
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисейmiksoft,

по Вашему запросу у меня новость повторяется столько количество раз, сколько картинок во второй таблице. Сейчас попробую ещё раз изменить код PHP для вывода новости...Ну тут либо проверять id новости (если совпадает с предыдущим, то выводить только картинку), либо перестраивать запрос (например, чтобы для каждой новости запись была одна, а адрес картинок шли через запятую), либо вообще делать отдельные запросы для новостей и для картинок. Мой запрос пригоден для первого случая.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640940
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алисей, правильно, многочисленные (десятикратные, скажем так). Но это по-моему наиболее оптимальный способ, так как классический слуяай, когда при попытке выбора изображений для последних десяти новостей после непосредственного выбора этих десяти новостей может случиться так, что будут выбраны не те данные, ибо между выполнением этих двух запросов появится ещё одна (или больше, тут уж как трудоспособность и количество админов сайта наложатся друг на друга).

А так берите запрос miksofta (там кстати выведется не 10 записей - 7 новостей и три повторяющихся, а 12 записей - 9 новостей в одну строку с одной картинкой и три строки для новости у которой 3 картинки) и доработайте PHP в плане вывода информации о новости только в случае изменения id новости.
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640943
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftАлисейmiksoft,

по Вашему запросу у меня новость повторяется столько количество раз, сколько картинок во второй таблице. Сейчас попробую ещё раз изменить код PHP для вывода новости...Ну тут либо проверять id новости (если совпадает с предыдущим, то выводить только картинку), либо перестраивать запрос (например, чтобы для каждой новости запись была одна, а адрес картинок шли через запятую), либо вообще делать отдельные запросы для новостей и для картинок. Мой запрос пригоден для первого случая.

Да, Ваш запрос подходит для первого случая хорошо, спасибо Вам. Записал его так:
$result_set = $MySQLi->query("SELECT * FROM (SELECT * FROM `news` ORDER BY `date` DESC LIMIT 10) news LEFT JOIN `news_img` ON news.imgid = `news_img`.imgid ORDER BY news.`date` DESC");
Теперь дело за самим кодом.

Я ещё подумаю как сделать 2 запроса к разным таблицам и потом уже при помощи кода искать и подставлять значения для 1 новости. Пока так не получалось, выдаёт ошибку на второй строке
$row = $result_set->fetch_assoc();
$row_img = $result_set_img->fetch_assoc();
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640946
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineАлисей, правильно, многочисленные (десятикратные, скажем так). Но это по-моему наиболее оптимальный способ, так как классический слуяай, когда при попытке выбора изображений для последних десяти новостей после непосредственного выбора этих десяти новостей может случиться так, что будут выбраны не те данные, ибо между выполнением этих двух запросов появится ещё одна (или больше, тут уж как трудоспособность и количество админов сайта наложатся друг на друга).

А так берите запрос miksofta (там кстати выведется не 10 записей - 7 новостей и три повторяющихся, а 12 записей - 9 новостей в одну строку с одной картинкой и три строки для новости у которой 3 картинки) и доработайте PHP в плане вывода информации о новости только в случае изменения id новости.

Да, уже переделал кое-что...стало 12 записей...с привязкой АйДи для отображения полного текста новости тоже разобрался. Теперь дело за ПХП и моей больной головой :-)
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640950
Алисей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо всем!!!
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38640997
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлисейЯ ещё подумаю как сделать 2 запроса к разным таблицам и потом уже при помощи кода искать и подставлять значения для 1 новости. Пока так не получалось, выдаёт ошибку на второй строке
$row = $result_set->fetch_assoc();
$row_img = $result_set_img->fetch_assoc();
всё-таки показали бы эту ошибку...
хотя ХШ говорит, что ошибка возникает из-за повторяющихся полей imgid. Ну так просто в запросе написать "select news_img.* from <далее по тексту>"
...
Рейтинг: 0 / 0
Выборка из таблицы значений по индексу другой таблицы
    #38641000
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.Fontaine, наврал хрустальный шар
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из таблицы значений по индексу другой таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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