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

  • Автор темы Автор темы ShVad
  • Дата начала Дата начала

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";
Чтобы в массив или куданибудь данные выводились

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

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

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

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

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

то, что при правильном проектировании базы твоя задача с 10 послений файловрешается 1 запросом - элементарно.
 
В таблице 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 выводить в массив, а из него определять уже название
 
Ну так и получай по ид название категории

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

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

-~{}~ 10.09.06 22:21:

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

$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];}
 
Что именно не получилось? alpine дал ссылку с наглядным примером "Как надо" правильно писать запрос.
 
Соединил поля
$query = "SELECT * FROM `dle_filespost` LEFT JOIN `dle_filescat` ON dle_filespost.catid=dle_filescat.id";

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