|
|
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Всем привет. Пример: Новостная лента с фотографиями, делаю запрос к базе $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`;) Как это лучше реализовать или какой лучше вариант использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:28:46 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
не очень понял задачу, но похоже, что так: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 19:55:16 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо. Попробую завтра с двойным SELECT. Суть моей идеи чтобы новости были в одной таблице, а изображения к каждой новости в другой таблице. Сейчас я тупо кодом прописываю в поле ТЕКСТ ссылки на изображения. Может есть более разумный вариант это реализовать, использую например только одну таблицу, не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 20:05:16 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Не получается сделать такую выборку, чтобы в одном запросе были нужные данные и в правильной структуре. Придётся загружать массив с новостями и отдельно массив с фотографиями, не знаю будет ли это рационально. Буду для каждой новости проверять наличие фото и уже простым перебором добавлять в новость фото из другого массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 11:24:48 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, Ну так вы объясните толком задачу. Где и как лежат данные и в каком виде нужно получить результат. Желательно с примерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 11:25:59 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
miksoft, Есть две таблицы, одна новости, другая изображения. У каждой новости есть свой imgid, по этому идентификатору ищутся значения в таблице Изображения и добавляются в новость все изображения с этим идентификатором ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 11:58:35 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Написал вот такой код для выбора нужных изображений ("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(); выдаёт ошибку, думаю ошибка в запросе, не могу понять где ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:37:15 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисейвыдаёт ошибкукоторую мы должны угадать? запрос на вид нормальный (откидываю в сторону вопросы оптимизации) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:43:55 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, по данному запросу не получится считать 10 последних новостей и вывести их на экран (тем более если учитывать, что у разных новостей могут быть одинаковые картинки). Вы выбираете только информацию о картинках. miksoft написал нормальный запрос, зачем писать свою отсебятину, не понимаю однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:52:41 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, не, всё правильно, это у ТС такие замысловатые названия полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:53:29 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, другое дело, что запрос miksofta выведет не 10 строк а значительно больше (судя по картинке, в news_img для одной картинки может быть заполнено несколько строк), но эту проблему можно решить уже непосредственно в php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 12:57:53 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
tanglir, чё там замысловатого? новости хранятся в таблице news. Информация о картинке в таблице news_img. Всё понятно пока что. Автор из таблицы новостей берёт id картинок прикреплённых к последним десяти новосям и ищёт в таблице картинок информацию об этих картинках. Это тоже всё прекрасно понятно. Непонятно одно: а новости-то сами где в этом запросе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:00:49 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
tanglir, я не вижу в запросе автора заголовка новости, текста новости, даты создания новости. А в запрсое miksofta это всё есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:03:18 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineMr.Fontaine, другое дело, что запрос miksofta выведет не 10 строк а значительно больше (судя по картинке, в news_img для одной картинки может быть заполнено несколько строк), но эту проблему можно решить уже непосредственно в phpНа тот момент такой картинки еще не было, я полагал, что идентификатор картинки уникален. Но теперь стало непонятным назначение поля `news`.`imgid`. Можно же картинки привязывать прямо к id новости. Решить дублирование записей можно и в запросе. Главное понять, в каком виде должен быть результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:03:24 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
tanglir, ошибка скорее всего в запросе, потому что при более простом запросе, ошибка не появляется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:04:15 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
miksoftНа тот момент такой картинки еще не было, я полагал, что идентификатор картинки уникален. Но теперь стало непонятным назначение поля `news`.`imgid`. Можно же картинки привязывать прямо к id новости. Решить дублирование записей можно и в запросе. Главное понять, в каком виде должен быть результат. Полностю согласен, и как раз говорю, что Ваш запрос более приемлем, чем запрос автора. Естественно мы тут гадаем что вообще должно появиться. Особо популярный сегодня хрустальный шар подсказывает, что картинка привязана к новости в таблице news (не зря же там есть поле imgid), а в таблице news_img записаны в несколько строчек параметры картинки (может быть ширина, высота, описание картинки, которое надо вывести на страничку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:11:12 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
miksoft, Я специально не стал привязывать АйДи новости (уникальный) к АйДи картинки. Это ведь не имеет значения сейчас (оптимизацию я сделаю позже). Картинки у меня будут разные для одной новости. Для одной новости их может быть как одна, так и 20. Сейчас задача состоит в том чтобы извлечь все изображения из 2 таблицы АйДи которых совпадает с АйДи в 1 таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:13:51 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Только сейчас осознал, что это запрос Алисейдля выбора нужных изображений тут новостей и быть-то не должно. То есть работа строится через два запроса. Но тогда он вообще не понятен. При использовании двух запросов по-моему единственный путь выбрать новости и в цикле по id картинки выбирать все параметры, нахрена там опять выбираются картинки для всех новостей да ещё и без distincta непонятно однако... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:16:50 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, Вернее наоборот...извлечь изображения из таблицы ИЗО которые должны быть для последних 10 новостей по идентификатору ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:16:52 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, Все еще остается непонятным, чем именно не угодил мой запрос? Ваши фразы "не получается" и "выдает ошибку" никакой ясности не вносят. Показывайте фактические результаты и сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:20:37 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
miksoft, по Вашему запросу у меня новость повторяется столько количество раз, сколько картинок во второй таблице. Сейчас попробую ещё раз изменить код PHP для вывода новости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:29:05 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, так же непонятно почему нельзя написать Код: sql 1. и также непонятно почему связь полей news.imgid=news_img.imgid не является привязкой новости к картинке(картинкам). А что же это тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:33:02 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
miksoft, как я понимаю, Ваш запрос создаёт новый массив, допустим берём последние 10 новостей и если есть 3 картинки в другой таблице к 1 новости, то выводится 7 новостей и 3 повторяющихся. Дополнительно к этому у меня сбиваются индексы, для отображения новости полностью...буду переписывать код PHP в таком случае ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:35:02 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, всё правильно, это и есть привязка, пусть не по основному индексу, но привязка :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:36:08 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
[quot Mr.Fontaine]Алисей, так же непонятно почему нельзя написать Код: sql 1. Можно и так, но тогда я так понимаю этот запрос нужно писать в цикле для каждой выводимой новости...это многочисленные обращения к базе, или я не так думаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:38:03 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Задача вроде простая, может мне структуру самой таблицы или базы изменить? и хранить изображения (ссылки) прямо в таблице Новости? (как-то не очень вроде) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:40:21 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисейmiksoft, по Вашему запросу у меня новость повторяется столько количество раз, сколько картинок во второй таблице. Сейчас попробую ещё раз изменить код PHP для вывода новости...Ну тут либо проверять id новости (если совпадает с предыдущим, то выводить только картинку), либо перестраивать запрос (например, чтобы для каждой новости запись была одна, а адрес картинок шли через запятую), либо вообще делать отдельные запросы для новостей и для картинок. Мой запрос пригоден для первого случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:40:39 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Алисей, правильно, многочисленные (десятикратные, скажем так). Но это по-моему наиболее оптимальный способ, так как классический слуяай, когда при попытке выбора изображений для последних десяти новостей после непосредственного выбора этих десяти новостей может случиться так, что будут выбраны не те данные, ибо между выполнением этих двух запросов появится ещё одна (или больше, тут уж как трудоспособность и количество админов сайта наложатся друг на друга). А так берите запрос miksofta (там кстати выведется не 10 записей - 7 новостей и три повторяющихся, а 12 записей - 9 новостей в одну строку с одной картинкой и три строки для новости у которой 3 картинки) и доработайте PHP в плане вывода информации о новости только в случае изменения id новости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:48:15 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
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(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:51:13 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineАлисей, правильно, многочисленные (десятикратные, скажем так). Но это по-моему наиболее оптимальный способ, так как классический слуяай, когда при попытке выбора изображений для последних десяти новостей после непосредственного выбора этих десяти новостей может случиться так, что будут выбраны не те данные, ибо между выполнением этих двух запросов появится ещё одна (или больше, тут уж как трудоспособность и количество админов сайта наложатся друг на друга). А так берите запрос miksofta (там кстати выведется не 10 записей - 7 новостей и три повторяющихся, а 12 записей - 9 новостей в одну строку с одной картинкой и три строки для новости у которой 3 картинки) и доработайте PHP в плане вывода информации о новости только в случае изменения id новости. Да, уже переделал кое-что...стало 12 записей...с привязкой АйДи для отображения полного текста новости тоже разобрался. Теперь дело за ПХП и моей больной головой :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:53:50 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
Большое спасибо всем!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 13:55:14 |
|
||
|
Выборка из таблицы значений по индексу другой таблицы
|
|||
|---|---|---|---|
|
#18+
АлисейЯ ещё подумаю как сделать 2 запроса к разным таблицам и потом уже при помощи кода искать и подставлять значения для 1 новости. Пока так не получалось, выдаёт ошибку на второй строке $row = $result_set->fetch_assoc(); $row_img = $result_set_img->fetch_assoc(); всё-таки показали бы эту ошибку... хотя ХШ говорит, что ошибка возникает из-за повторяющихся полей imgid. Ну так просто в запросе написать "select news_img.* from <далее по тексту>" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2014, 14:17:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1834833]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
4ms |
get page messages: |
79ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 413ms |

| 0 / 0 |
