[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Связи
Stasonix
есть одна таблица с названиями категорий, вторая уже со статьями в которой содержится не название категории, а ее id из 1-ой таблицы, так вот как сделать выборку из таблицы со статьями, чтобы она возвращала вместо идентификатора название категории, к которой эта статья принадлежит?

по сути у меня сейчас стоит

SELECT * FROM `tbl_articles`


и когда фетчу, то получаю cat_id в виде int, а вот как его на данные из 2-й таблицы заменить, т.е. как-то так:

SELECT `category` FROM `tbl_categories`


, аййй... все равно не въеду, просто не хочется каждый раз в php создавать запрос на выборку из БД именно названия категории, а что если массив окажется на 1000 элементов и более... Одним запросом можно это сделать?



Спустя 24 минуты, 27 секунд (7.07.2012 - 13:40) rooor написал(а):
JOIN

Спустя 31 минута, 44 секунды (7.07.2012 - 14:12) DarkLynx написал(а):

SELECT a.name, b.cat_name FROM tbl_articles AS a
JOIN tbl_categories AS b ON a.cat_id = b.id


Условия, сортировки, лимиты и так далее расставишь сам.
На выходе получишь
array =>
['name'] => имя статьи
['cat_name'] => имя категории

Спустя 10 минут, 32 секунды (7.07.2012 - 14:22) Stasonix написал(а):
Спасибо DarkLynx, разобрался, все получилось!

Правда из этого вышел массив, который бы хотелось переформатировать, т.е.

Array
(
[0] => Array
(
[title] => Обработка формы
[category] => php
)


а сделать:

$data = array ( "php" => array( "обработка формы", "еще какой-то титл" )


сложно?

Спустя 7 минут, 34 секунды (7.07.2012 - 14:30) DarkLynx написал(а):
Не совсем понял что вы хотите.. С нормальными данными можете привести пример, что есть и что из этого должно получится. А то у Вас в одном массиве одно, потом еще массив в котором что то другое, не понятно откуда взявшееся.

Спустя 7 минут, 56 секунд (7.07.2012 - 14:38) Stasonix написал(а):
if ($result = $pdo->query("SELECT a.title, b.category FROM `articles` AS a
JOIN `categories` AS b ON a.cat_id = b.id"
))
{

$result->execute();

$data = $result->fetchAll(PDO::FETCH_ASSOC);

echo "<pre>";
print_r($data);
echo "</pre>";

}



на выходе:



Array
(
[0] => Array
(
[title] => Обработка формы
[category] => php
)

[1] => Array
(
[title] => Функция 1
[category] => php
)

[2] => Array
(
[title] => Функция 2
[category] => php
)

[3] => Array
(
[title] => обзор PDO в пхп
[category] => pdo
)

[4] => Array
(
[title] => обзор MySQLi в пхп
[category] => mysqli
)
)


а хочется привести в более приемлемый (для меня) вид:



array
(
"php" => array ( "Обработка формы", "Функция 1", "Функция 2" ),
"pdo" => array ( "Обзор PDO в пхп"),
"mysqli" => array ( "Обзор MySQLi в пхп"),
)



Спустя 14 минут, 55 секунд (7.07.2012 - 14:53) DarkLynx написал(а):

foreach ($data as $value)
{
$data2[$value['category']][] = $value['title'];
}
var_dump($data2);



array
'php' =>
array
0 => string 'Обработка формы' (length=15)
1 => string 'Функция 1' (length=9)
2 => string 'Функция 2' (length=9)
'pdo' =>
array
0 => string 'обзор PDO в пхп' (length=15)
'mysqli' =>
array
0 => string 'обзор MySQLi в пхп' (length=18)

Спустя 8 минут, 20 секунд (7.07.2012 - 15:01) Stasonix написал(а):
DarkLynx

Респект!
Быстрый ответ:

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