|
|
|
| Есть две таблицы, одна с записями фотосодержания table_photo, а другая с записями видеосодержания table_video.
Нужно выводить последние записи из table_photo и table_video по очередно.
То есть на странице All будет смесь последнего видео и фото контента.
Как сделать один запрос, чтобы получить корректные массивы, например так:
Array
(
[0] => Array // последняя запись из таблицы table_photo
(
[id_photo] => 18
[content] => ifmpv3Ha.jpg
)
[1] => Array // последняя запись из таблицы table_video
(
[id_video] => 5
[content_video] => Mqwdila8.mp4
)
[2] => Array // ПРЕДпоследняя запись из таблицы table_photo
(
[id_photo] => 16
[content] => 0d0J9piP.jpg
)
[3] => Array // ПРЕДпоследняя запись из таблицы table_video
(
[id_video] => 2
[content_video] => 2eaJFFqE.mp4
)
...
)
|
Примечание: количество записей из таблицы table_photo не обязательно должно соответствовать количеству записей из таблицы table_video | |
|
|
|
|
|
|
|
для: userfor
(16.08.2012 в 07:30)
| | Почему именно так, разве есть проблемы из такого:
[0] => Array
(
[id_photo] => 18
[content] => ifmpv3Ha.jpg
[id_video] => 5
[content_video] => Mqwdila8.mp4
)
[1] => Array
(
[id_photo] => 16
[content] => 0d0J9piP.jpg
[id_video] => 2
[content_video] => 2eaJFFqE.mp4
)
| получить в итоге тоже самое, что нужно? | |
|
|
|
|
|
|
|
для: confirm
(16.08.2012 в 14:47)
| | Нужно явно определить к чему относится массив к фото-галере или видео-галерее. Непонятно тогда, что выводить контент видео или фото в цикле (чередование у них не через одного может быть)?
Или чего то не понял? | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 10:46)
| | чередование у них не через одного может быть
тогда распишите алгоритм чередования | |
|
|
|
|
|
|
|
для: Valick
(17.08.2012 в 10:48)
| | Предположим в таблице table_photo 4 записи
а в таблице table_video 1 запись
получаем последнюю запись из table_photo
затем
получаем последнюю запись из table_video
затем
получаем предпоследнюю запись из table_photo
затем
получаем предпоследнюю запись из table_video - УПС, а тут не ту записи, тогда пропускаем
идем теперь за остальными записями из table_photo
|
| |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 11:08)
| | покажите структуру таблиц | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 10:46)
| | А ключи массива для чего? | |
|
|
|
|
|
|
|
для: confirm
(17.08.2012 в 10:58)
| | Я не знаю, как определить к чему относится данный массив? К видео или фото галерее?
[1] => Array
(
[id_photo] => 16
[content] => 0d0J9piP.jpg
[id_video] => 2
[content_video] => 2eaJFFqE.mp4
)
|
Подскажите... | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 11:11)
| | Вам что после выборки из таблицы нужно передать два массива двум разным получателям? Или вам надо разложить это с чередованием строк фото/видео?
Словами напишите, что в итоге хотите получить. | |
|
|
|
|
|
|
|
для: confirm
(17.08.2012 в 11:14)
| | Предположим в таблице table_photo 4 записи
а в таблице table_video 1 запись
получаем последнюю запись (он же массив[0] для цикла foreach) из table_photo
затем
получаем последнюю запись (он же массив[1] для цикла foreach) из table_video
затем
получаем предпоследнюю запись из table_photo
затем
получаем предпоследнюю запись из table_video - УПС, а тут не ту записи, тогда пропускаем
идем теперь за остальными записями из table_photo
|
| |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 11:26)
| | а) массив можно разбить как вам будет угодно - array_chunk()
б) в цикле, опираясь на ключи массива, можно раскидать его значения как вам вздумается.
Выбирайте. | |
|
|
|
|
|
|
|
для: confirm
(17.08.2012 в 11:30)
| | В общем сейчас делаю два запроса, потом объединяю массивы, потом сортирую... = геморой.
Можно делать один запрос, получать смешанные массивы, потом их делить, разбирать... = геморой.
Вернемся к началу:
Как сделать один запрос, чтобы получить сразу корректные массивы? | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 12:00)
| | Ну чушь какая-то, ей богу.
Надо полагать, что картинки и видео, это данные принадлежащие каждой записи?
Вы получаете выборку отсортированную вашим требованиям - это сделать невозможно, или все-таки можно?
Так какая проблема тогда?
Давайте так - меньше слов, и короткий прием конечного htnk-кода с этими данными. | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 12:00)
| | я вас просил показать структуру таблиц
мне нужны имена полей и их типы | |
|
|
|
|
 8.6 Кб |
|
|
для: Valick
(17.08.2012 в 12:36)
| | Упустил ваше сообщение.
Связи пока указывать не стал. | |
|
|
|
|
 9.9 Кб |
|
|
для: Valick
(17.08.2012 в 12:36)
| | У таблицы видео структура. | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 14:45)
| | в результате вам нужны все поля из обоих таблиц? или точно так как в первом посте? | |
|
|
|
|
|
|
|
для: Valick
(17.08.2012 в 15:33)
| | Ну да поля нужны все.
Фишка еще в том, что нужно извлекать не все записи сразу, чтобы делать постраничную навигацию.
Может это лучше с помощью процедур как-то делать? | |
|
|
|
|
|
|
|
для: userfor
(17.08.2012 в 15:44)
| |
<?php
include('connect.php');
mysql_query("SET @f:=-1;");
mysql_query("SET @v:=0;");
$query="(SELECT @f:=@f+2 AS c,
'photo' AS name,
p.id_gal_photo AS id,
p.img_gal_photo AS content
FROM photo AS p
ORDER BY p.id_gal_photo)
UNION ALL
(SELECT @v:=@v+2 AS c,
'video' AS name,
v.id_gal_video AS id,
v.img_gal_video AS content
FROM video AS v
ORDER BY v.id_gal_video)
ORDER BY c DESC
LIMIT 10;";
$res=mysql_query($query) or die(mysql_error());
while($mass=mysql_fetch_assoc($res)){
echo "<PRE>"; print_r($mass); echo "</PRE>";
}
?>
|
пробуйте, нужные поля добавите по аналогии, главное чтобы алиасы совпадали
и по хорошему не надо загонять (загоняться) все в массив, зачем лишние телодвижения, все можно выводить сразу
while($mass=mysql_fetch_assoc($res)){
if($mass[name]=='photo') {echo "Это фотография: ".$mass[content]."<br />";}
if($mass[name]=='video') {echo "Это видеофайл: ".$mass[content]."<br />";}
}
|
__
будем считать, что про процедуры я ничего не слышал :) | |
|
|
|
|
|
|
|
для: Valick
(17.08.2012 в 15:58)
| | О_о!
Мне бы научится писать такие запросы.
Благодарю друг! | |
|
|
|
|
|
|
|
для: userfor
(18.08.2012 в 06:28)
| | по части логики вот тут задача посложнее была
ну а в остальном я всем рекомендую только одно, читать книги, правда у большинства это вызывает негативные эмоции | |
|
|
|
|
|
|
|
для: Valick
(18.08.2012 в 09:10)
| | Книги это не панацея. Книги это по большей части теория. Без практического применения, а главное без практики применения во всяких заковыристых ситуациях, толку от нее не много, кроме самого основного применения.
Вам, кстати, если имеется некоторое свободное время, тоже рекомендую ознакомиться с сайтом из поста ниже. Я тоже, до того как туда попал думал что знаю SQL :-D))) | |
|
|
|
|
|
|
|
для: Sfinks
(18.08.2012 в 13:55)
| | теория - практика = отсутсвие кода
практика - теория = говносайт
теория + практика = отличные сайты
каждый выбирает по себе...
___
лично у меня кроме этого форума практики нет, всему что я знаю я научился из книг | |
|
|
|
|
|
|
|
для: Valick
(18.08.2012 в 14:02)
| | Я ни в коем случае не утверждаю, что не нужно читать книги. Нужно и обязательно! Только книги должны быть проверенными - это раз и могут возникать форс-мажорные обстоятельства - это 2! Я например заказал на озоне книгу "SQL для профессионалов", написанную одним из авторов стандарта SQL - Джо Селко, еще 25го июНя и у меня ее до сих пор нет! Не буду описывать как и в чем они лажают, но факт остается фактом - книгу я еще не видел! А сайт - он вот он =) | |
|
|
|
|
|
|
|
для: userfor
(18.08.2012 в 06:28)
| | Если реально хотите научиться, а не на словах, то идите сюда: http://sql-ex.ru
Решайте задачи, начиная с обучающего этапа, читайте справку, рекомендации, а главное форум по задачам.
Если есть терпение - научитесь не только такие решать, но и раз в 50 посложнее!
____________
Модератор, не удаляй, плиз. Это не коммерческая реклама. Это я всем рекомендую! =) | |
|
|
|