!!!РЕШЕНО
Дано:
таблица mysql и три поля
+-----------+--------------+---------+ |id-значения| id-категории | Имя | +-----------+--------------+---------+ | | | | | attr_1 | 1 | name_1 | | | | | +------------------------------------+ | | | | | attr_2 | 2 | name_2 | | | | | +-----------+--------------+---------+
нужно выводить поле Имя в два разных поля, по id-категории
Но получаю я их по id-значения (SELECT FROM LEFT JOIN ON WHERE
)
Вопрос: как выводить Имена из категории 1 в одну переменную, а Имена из категории 2 в другую, что бы получилось что-то типа:
echo "Это поле 1 и Именем $name_1";
echo "А это поле 2 и Именем $name_2";
Оригинал кода:
if ($res = $mysqli->query("
SELECT
$pt.product_id,
$pt.`alias_ru-RU` AS product_url,
$pt.product_ean,
$pt.`product_quantity` AS quantity,
$pt.product_price,
$pt.`name_ru-RU` AS name,
$pt.image,
$pt.`short_description_ru-RU` AS description,
$ct.`alias_ru-RU` AS cat_url,
$ct.category_id,
<b>$attr.`name_ru-RU` AS size,
$attr.`name_ru-RU` AS color,</b>
FROM $pt
LEFT JOIN $pc ON $pt.product_id = $pc.product_id
LEFT JOIN $ct ON $pc.`category_id` = $ct.category_id
LEFT JOIN $pa ON $pt.product_id = $pa.product_id
<b>LEFT JOIN $attr ON $pa.attr_2 = $attr.value_id
LEFT JOIN $attr ON $pa.attr_1 = $attr.value_id</b>
WHERE
parent_id = 0
ORDER BY product_id"))
while( $row = $res->fetch_assoc() ) {
if($row['quantity']>0) { $available = 'true'; }
else { $available = 'false'; }
...
echo $row['size'];
echo $row['color'];
...
UPD#1
добавил алиасы, что не так сделал??
if ($res = $mysqli->query(" SELECT ... $attr2.`name_ru-RU` AS size, $attr1.`name_ru-RU` AS color FROM $pt ... LEFT JOIN $attr $attr2 ON $pa.attr_2 = $attr2.value_id LEFT JOIN $attr $attr1 ON $pa.attr_1 = $attr1.value_id WHERE ... echo $row['size']; echo $row['color'];
...не работает...
UPD#2
РЕШЕНО
SELECT ... A2.name_ru-RU
AS size, A1.name_ru-RU
AS color ... FROM $pt ... LEFT JOIN $attr AS A2 ON $pa.attr_2 = A2.value_id LEFT JOIN $attr AS A1 ON $pa.attr_1 = A1.value_id ...echo $row['size']; echo $row['color'];
Решение найдено, отображается все корректно.
Хотелось бы услышать мнение - допустимо ли такое использование или есть какие-то недочеты.
правильное использование алиасов, рабочий вариант:
SELECT
...
A2.name_ru-RU AS size,
A1.name_ru-RU AS color
...
FROM $pt
...
LEFT JOIN $attr AS A2 ON $pa.attr_2 = A2.value_id
LEFT JOIN $attr AS A1 ON $pa.attr_1 = A1.value_id
...
echo $row['size'];
echo $row['color'];
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Мне необходимо получить/обновить/удалить данные во внешней базе, никак не относящийся к базе самого приложенияНеобходимо к ней обращаться...
Как задать максимальный и минимальный размеры группы, чтобы получить записи, где count < 5 и count > 2?
При выполнении вставки данных в таблицу я получаю ошибку: