<?php
$query = mysql_query("SELECT `id`, `id_menu`, `title`, `view`, `date_now`, `view`
FROM `data`
ORDER BY `view`
DESC LIMIT 5") or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
$q = mysql_query("SELECT `id` FROM `menu` WHERE `id` = ".$ind[id_menu]);
$u = mysql_fetch_assoc($q);
echo '
<a href="page_view.php?ind='.$u['id'].'&view='.$ind['id'].'">
'.$ind['title'].'.
<br />
<span class="text_left_date">Просморов:'.(int)$ind['view'].'</span>
-
<span class="text_left_date">'.$date_add.'</span>
</a>
';
Собственно вопрос. Тут давеча узнал, что запрос в цикле не есть good, и решил переделать запрос на объеденяющий. И вот встала задачка. Сам код запроса
<?php
$query = mysql_query("SELECT `data`.`id`, `data`.`id_menu`, `data`.`title`,
`data`.`view`, `data`.`date_now`, `data`.`view`,
`menu`.`id`
FROM `data`, `menu`
WHERE `menu`.`id`=`data`.`id_menu`
ORDER BY `view`
DESC LIMIT 5") or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
echo '
<a href="page_view.php?ind='.$u['id'].'&view='.$ind['id'].'">
'.$ind['title'].'.
<br />
<span class="text_left_date">Просморов:'.(int)$ind['view'].'</span>
-
<span class="text_left_date">'.$date_add.'</span>
</a>
';
}
как мне подставить вот
<a href="page_view.php?ind='.$u['id'].'&view='.$ind['id'].'">правильную ссылку. Ну что б id из menu и id из data? Надеюсь правильно расписал... если что уточняйте.
Спустя 10 минут, 14 секунд (21.03.2011 - 00:33) kirik написал(а):
Цитата (m4a1fox @ 20.03.2011 - 16:23) |
правильную ссылку. Ну что б id из menu и id из data? |
SELECT `data`.`id` AS `data_id`, `data`.`id_menu`, `data`.`title`,
`data`.`view`, `data`.`date_now`, `data`.`view`,
`menu`.`id` AS `menu_id`
и соответственно:
'<a href="page_view.php?ind='.$ind['data_id'].'&view='.$ind['menu_id'].'">'
если я всё правильно понял..
Спустя 56 секунд (21.03.2011 - 00:34) inpost написал(а):
SELECT a.`id` AS `id_a`,b.`id` AS `id_b`
from `data` a, `menu` b
как-то так. То есть указать из каких таблиц идёт выбор и в запросе переименовать id на id_a, и id_b (к примеру). И обращаться уже к id_a & id_b
from `data` a, `menu` b
как-то так. То есть указать из каких таблиц идёт выбор и в запросе переименовать id на id_a, и id_b (к примеру). И обращаться уже к id_a & id_b
Спустя 38 минут, 27 секунд (21.03.2011 - 01:13) m4a1fox написал(а):
kirik
Да, сработало, благодарю...
Да, сработало, благодарю...
Спустя 25 минут, 20 секунд (21.03.2011 - 01:38) m4a1fox написал(а):
Если никто не возражает, я спрошу еще кое что. Как быть с первым запросом, я разобрался... Но вот тут возник еще вопрос. Реально ли уместить вот это
в один запрос. Вот какие у меня попытки были -
<?php
$query = mysql_query("SELECT `id`, `name` FROM `menu`") or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
$arch = mysql_query("SELECT `id`
FROM `data`
WHERE `id_menu`='".(int)$ind['id']."'
") or die ("Ошибка -".mysql_error());
$cnt = mysql_num_rows($arch);
$count_menu = ($cnt == 0) ? NULL: '('.$cnt.')';
echo '
<a href=archive_news.php?ind='.(int)$ind['id'].'>
'.$ind['name'].' '.$count_menu.'
</a>
';
}
?>
в один запрос. Вот какие у меня попытки были -
<?php
$query = mysql_query("SELECT `menu`.`id` AS `menu_id`, `menu`.`name`,
`data`.`id_menu` AS `data_id_menu`
FROM `menu` LEFT JOIN `data`
ON `menu`.`id`=`data`.`id_menu`
") or die ("Ошибка -".mysql_error());
while($ind=mysql_fetch_assoc($query))
{
$arch = mysql_query("SELECT `id`
FROM `data`
WHERE `id_menu`='".(int)$ind['menu_id']."'
") or die ("Ошибка -".mysql_error());
$cnt = mysql_num_rows($arch);
$count_menu = ($cnt == 0) ? NULL: '('.$cnt.')';
echo '
<a href=archive_news.php?ind='.(int)$ind['id'].'>
'.$ind['name'].' '.$count_menu.'
</a>
';
}
?>
Спустя 7 минут, 13 секунд (21.03.2011 - 01:45) inpost написал(а):
SELECT a.`id` AS `id_menu`, a.`name`, b.`id` AS `id_data`
FROM `menu` a
LEFT JOIN `data` b ON a.`id`= b.`id_menu`
GROUP BY a.`id`
Спустя 26 минут, 41 секунда (21.03.2011 - 02:12) m4a1fox написал(а):
inpost
Спасибо. Разобрался. Только вот, как подсчитать кол-во? А именно 2 запрос?
Спасибо. Разобрался. Только вот, как подсчитать кол-во? А именно 2 запрос?
$arch = mysql_query("SELECT `id`.
FROM `data`
WHERE `id_menu`='".(int)$ind['menu_id']."'
") or die ("Ошибка -".mysql_error());
$cnt = mysql_num_rows($arch);
$count_menu = ($cnt == 0) ? NULL: '('.$cnt.')';
Спустя 6 часов, 32 минуты, 15 секунд (21.03.2011 - 08:44) amazing написал(а):
SELECT a.`id` AS `id_menu`, a.`name`, b.`id` AS `id_data`, COUNT(b.`id`) AS `count_id`
FROM ...
Спустя 4 часа, 8 минут, 59 секунд (21.03.2011 - 12:53) m4a1fox написал(а):
amazing
Спасибо.... помогло. Теперь буду все переделывать:)
Спасибо.... помогло. Теперь буду все переделывать:)