Способы вывода из MySQL

ShVad

JSmart CMS
Способы вывода из MySQL

Привет
Заканчивая делать архив файлов нашел код который делает много запросов.
У меня в таблице для файлов хранится id категории (в которой файл),
название категории выводил так:
//category name
$categoryid = $row[catid]; //Это id категории из таблици с файлами
$db->query_2 = "SELECT * FROM `dle_filescat` WHERE id = '$categoryid'";
$result_2 = mysql_query($db->query_2) or die(mysql_error());
while($row_2 = $db->get_row($result_2)){$catname = $row_2[catname];}

Как я понял, у меня сколько выводится файлов на страницу, столько и запросов.

Как можно сделать все одним запросом?
$db->query_2 = "SELECT * FROM `dle_filescat` WHERE 1";
Чтобы в массив или куданибудь данные выводились

Помогите сделать
 

aleks_raiden

Новичок
гм... а конкретнее? Указанный запрос выведет все записи для одной категории, то есть все файлы. А какая логика работы страницы?

Скажем так, идет от противного:
1. На странице должны выводится ВСЕ файлы ОДНОЙ категории?
2. Каждый файл может быть с ДРУГОЙ (своей) категории?

да и этот запрос можно оптимизировать, указав ограничение на количество выборок (если на страницу фиксированое количесвто записей показывается, и перечислив вручную поля в запросе селект (вместо *)
 

ShVad

JSmart CMS
а главной странице выводятся 10 последних файлов.
и получается 10 запросов

как сделать чтобы из таблици категорий
$db->query_2 = "SELECT * FROM `dle_filescat` WHERE 1";
Создавался массив вида
1 = Программы
2 = Игры
5 = Клипы
 

aleks_raiden

Новичок
дата хранится? вот и выводи с условием ORDER BY date_field DESC LIMIT 10

без детального обьяснения структуры таблицы (которая у тебя скрыта за SELECT * немогу ничего сказать...

то, что при правильном проектировании базы твоя задача с 10 послений файловрешается 1 запросом - элементарно.
 

ShVad

JSmart CMS
В таблице dle_filespost хранится:
заголовок
всякое разное
id категории

В таблице dle_filescat хранится:
id
название категории

Мне нужно по id получять название категории!
Сейчас у меня так
//category name
$categoryid = $row[catid];
$db->query_2 = "SELECT * FROM `dle_filescat` WHERE id = '$categoryid'";
$result_2 = mysql_query($db->query_2) or die(mysql_error());
while($row_2 = $db->get_row($result_2)){$catname = $row_2[catname];}
--------------------------------------------
Но много запросов делает, как из dle_filescat выводить в массив, а из него определять уже название
 

Ermitazh

Новичок
Ну так и получай по ид название категории

while($row_2 = $db->get_row($result_2)){$catname = $row_2[catname];} - что ты этой строчкой делаешь?
 

ShVad

JSmart CMS
Автор оригинала: Ermitazh
Ну так и получай по ид название категории

while($row_2 = $db->get_row($result_2)){$catname = $row_2[catname];} - что ты этой строчкой делаешь?
ей много запросов получается
 

Ermitazh

Новичок
ShVad
почитай то что тебе alpine дал, уверен, что ответ найдёшь именно там
 

ShVad

JSmart CMS
мне бы одним запросом массив создавать, а потом из него извлекать
 

Ermitazh

Новичок
почему ты не используешь то, что тебе дал alpine?
попробуй почитай, составь запрос. Если что не поймёшь, то спрашивай здесь...

-~{}~ 10.09.06 22:21:

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

ShVad

JSmart CMS
не получается, помогите

$db->query = ("SELECT * FROM `dle_filespost` WHERE 1 ORDER BY id DESC LIMIT 100");
$result = mysql_query($db->query) or die(mysql_error());

------------------------- и вот

//category name
$categoryid = $row[catid];
$db->query_2 = "SELECT * FROM `dle_filescat` WHERE 1";
$result_2 = mysql_query($db->query_2) or die(mysql_error());
while($row_2 = $db->get_row($result_2)){$catname = $row_2[catname];}
 

Paralit

Новичок
Что именно не получилось? alpine дал ссылку с наглядным примером "Как надо" правильно писать запрос.
 

ShVad

JSmart CMS
Соединил поля
$query = "SELECT * FROM `dle_filespost` LEFT JOIN `dle_filescat` ON dle_filespost.catid=dle_filescat.id";

Но там и там есть полее ID
Как с ними работать?
 
Сверху