[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как объединить запросы mysql? Хелп
Whiskas
Имеются 2 таблицы:

category c параметрами: cat_id, name, desc.
и article с параметрами: id, cat_id, title, description, date

Мне необходимо вставить name(из category) в запрос article.

Что-то вроде:

$result = mysql_query('SELECT * FROM article') - что здесь дописать?
while($row = mysql_fetch_assoc($result)) {

print "<a href='category.php?cat_id=".$row['cat_id']."'> Вот тута как то должен быть тайтл из таблицы category ";

}

Советовать читать мануалы не надо, много чего перепробовал, и UNION, JOIN и т.д. Может я просто чего не догоняю. Может кто сможет хоть немного научить уму разуму?)
volter9
Whiskas
Это решается JOIN'ом:
SELECT a.*, c.name
FROM article a
LEFT JOIN category c ON (a.cat_id = c.id)


А дальше выводишь так:
print "<a href='category.php?cat_id={$row['cat_id']}'>
{$row['name']}
</a>";


_____________
Мой блог
Whiskas
Премного благодарствую, ваш пример у меня не заработал, но по нему я немного врубился, как работает JOIN)

В итоге:


$result = mysql_query ('SELECT * FROM article LEFT JOIN category ON article.cat_id = category.cat_id');

print "<a href='category.php?cat_id=".$row['cat_id']."'>".$row['name']."</a>";
volter9
Whiskas
Я имел ввиду так:
$result = mysql_query('SELECT * FROM article LEFT JOIN category ON (article.cat_id = category.id)');

while ($row = mysql_fetch_assoc($result)) {
print "<a href='category.php?cat_id={$row['cat_id']}'>{$row['name']}</a>";
}


_____________
Мой блог
Whiskas
Спасибо большое. И еще 1 вопросик, если не затруднит.

mysql_fetch_assoc или mysql_fetch_object - они сильно отличаются? 2-ой по типу объектов возвращает, так какой лучше? Есть ли прямо сильная разница, окромя "удобности" для программиста.

В инете не нашел нормального объяснения.
volter9
Whiskas
Используй то что тебе более удобнее для тебя. Разница в синтаксисе есть:
while ($row = mysql_fetch_assoc($result)) {
print "<a href='category.php?cat_id={$row['cat_id']}'>{$row['name']}</a>";
}

// vs.

while ($row = mysql_fetch_object($result)) {
print "<a href='category.php?cat_id={$row->cat_id}'>{$row->name}</a>";
}

Не знаю насчет разницы в производительности.

P.S.: К стати, mysql_* функции уже устарели, Вам лучше перейти на mysqli или PDO.

_____________
Мой блог
Whiskas
Спасибо, я только учусь(делаю блог для практики), и все книги на mysql. Посмотрю, что да как. Еще раз спасибо.
Whiskas
У меня возник еще 1 глупый вопрос, про "подготавливаемые запросы" mysqli.

В доках почитал, что если один и тот же запрос используется много, то он поможет шаблонизировать его. В итоге увеличение скорости и прочего еще там.

Но сути я не понял все равно. Т.е. их надо использовать постоянно и везде? Все же запросы используются по многу раз, или только для таких, как: INSERT, DELETE и прочих для статей (ведь их много приходится выводить, удалять и т.д.)?
Valick
При серии запросов, в которых меняются лишь данные, запрос передается на сервер только один раз, в дальнейшем посылаются только изменяющиеся данные.
Только лично для меня это выглядит сродни запросу в цикле. Если мы стремимся сделать выборку для какого-то логического блока одним запросом, то возможность повторно использовать подготовленный запрос выглядить странновато. А учитывая наличие хранимых процедур, странновато в двойне.

_____________
Стимулятор ~yoomoney - 41001303250491
Whiskas
Кажется понял) Благодарствую!
Быстрый ответ:

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