[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объединенные запросы - жесть
m4a1fox
Не бейте палками, просто не знаю как) сделать объединенный запрос к БД. Есть вот такой запрос к БД
<?
$query = "SELECT id, title, date_now, id_menu FROM data ORDER BY date DESC";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_assoc($id))
{
echo "<tr><td style='padding-left: 15px;'><a href=edit_news_form.php?ind=$ind[id]><img src='img/edit.gif'></a></td><td style='padding-left: 5px;'>$ind[title]</td><td style='padding: 5px;'>$ind[date_now]</td></tr>";
}
?>
он вытаскивает новости, у новостей есть id_menu - это категории в таблице menu где id.menu=id_menu.data. Как мне вытащить из menu название менюшки по id_menu из data?



Спустя 8 минут (22.12.2010 - 16:50) inpost написал(а):
Загляни сюда, специально для тебя: http://inpost.dp.ua/lessons/lessons.php?id=1

Спустя 2 минуты, 10 секунд (22.12.2010 - 16:52) m4a1fox написал(а):
Хм..... а где объединенные запросы? Я не увидел?!

Спустя 9 минут, 59 секунд (22.12.2010 - 17:02) Invis1ble написал(а):
m4a1fox
он тебе на некорректный вывод html указал

Спустя 1 минута, 47 секунд (22.12.2010 - 17:04) m4a1fox написал(а):
Я понял уже... Исправил
<?
$query = "SELECT `id`, `title`, `date_now`, `id_menu` FROM `data` ORDER BY `date` DESC";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_assoc($id))
{
echo '<tr><td style="padding-left: 15px;"><a href=edit_news_form.php?ind='.$ind[id].'><img src="img/edit.gif"></a></td><td style="padding-left: 5px;">'.$ind[title].'</td><td style="padding: 5px;">'.$ind[date_now].'</td><td style="padding-left: 5px;">'.$ind[id_menu].'</td></tr>';
}
?>
вот так получилось

Спустя 9 минут, 35 секунд (22.12.2010 - 17:14) inpost написал(а):
$ind['title'] - так надо!

Спустя 1 минута, 52 секунды (22.12.2010 - 17:16) Invis1ble написал(а):
m4a1fox
попробуй так:
$query = 'SELECT `id`, `title`, `date_now`, `id_menu`
FROM `data`
LEFT JOIN(
SELECT `id` AS mid,`название_менюшки` AS menu_name
FROM `menu`
) AS m ON mid=`id_menu`
ORDER BY `date` DESC'
;

только у тебя `date` нету в запросе, поэтому я не знаю что с сортировкой получится - ошибка скорее всего =)

Спустя 12 минут, 59 секунд (22.12.2010 - 17:29) m4a1fox написал(а):
нет, так не прокатило..... надо другой вариант искать, а как насчет UNION?

Спустя 2 минуты, 17 секунд (22.12.2010 - 17:31) Invis1ble написал(а):
m4a1fox
biggrin.gif
что значит "не прокатило"? Ошибки какие выдает? Или какой результат?

Спустя 3 минуты, 10 секунд (22.12.2010 - 17:34) m4a1fox написал(а):
Я сам если честно запутался в вашем запросе. Вот тут - 'название_менюшки` AS menu_name - то есть я просто не могу понять, название - это перечислить все пункты меню, или какая таблица в БД за это отвечает?

Спустя 8 минут, 11 секунд (22.12.2010 - 17:42) Invis1ble написал(а):
Цитата
'название_менюшки`

название поля, в котором содержится твое "название менюшки" (это я тебя просто процитировал, я ведь не знаю, как у тебя называется поле). Ты же хочешь
Цитата
вытащить из menu название менюшки по id_menu из data


Спустя 13 секунд (22.12.2010 - 17:42) linker написал(а):
SELECT `data`.`id`, `data`.`title`, `data`.`date_now`, `menu`.`menu_name` FROM `data`
LEFT JOIN `menu` ON `menu`.`id` = `data`.`id_menu`
ORDER BY `data`.`date_now` DESC

Спустя 8 минут, 17 секунд (22.12.2010 - 17:51) m4a1fox написал(а):
linker
Спасибо огромное... +1 полетел)

Спустя 1 минута, 38 секунд (22.12.2010 - 17:52) Invis1ble написал(а):
linker
в общем-то все то же самое, что и я предложил, только так будет выбирать все данные из таблицы menu, насколько я понимаю, а ТС хотел только название достать...

m4a1fox
а если бы ты немого пошевелил мозгой, то понял бы это еще из моего поста

Спустя 3 минуты, 23 секунды (22.12.2010 - 17:56) linker написал(а):
Invis1ble
SELECT `data`.`id`, `data`.`title`, `data`.`date_now`, `menu`.`menu_name`...
Выбирается только то, что здесь перечислено. И не совсем то, в твоем случае используется подзапрос, в котором индексы учавствовать не будут+плюс двойная выборка, а это все плохо. Зачем так изголяться, когда есть обычный LEFT JOIN и его нормальный синтаксис.

Спустя 2 минуты, 35 секунд (22.12.2010 - 17:58) Invis1ble написал(а):
linker
ясно, спасибо, что просветил, буду знать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.