Как реализовать вывод данных из MySQL

294
26 ноября 2016, 20:18

!!!РЕШЕНО

Дано:
таблица 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'];

Решение найдено, отображается все корректно.
Хотелось бы услышать мнение - допустимо ли такое использование или есть какие-то недочеты.

Answer 1

правильное использование алиасов, рабочий вариант:

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'];
READ ALSO
Получение данных из внешней базы в Rails

Получение данных из внешней базы в Rails

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

247
MySQL: GROUP BY устовия для COUNT(*)

MySQL: GROUP BY устовия для COUNT(*)

Как задать максимальный и минимальный размеры группы, чтобы получить записи, где count < 5 и count > 2?

311
Условие IF в триггере

Условие IF в триггере

Я вставляю данные в таблицу:

266
Ошибка 1142 при вставке данных в таблицу MySQL

Ошибка 1142 при вставке данных в таблицу MySQL

При выполнении вставки данных в таблицу я получаю ошибку:

432