MySQL Simple Join Избегайте множественных повторяющихся строк - PullRequest
0 голосов
/ 24 января 2019

Допустим, у меня есть 2 таблицы: 1-й имеет следующие столбцы:

products
--------
id   name        price
1  someproduct  99

второй

productimages
-----------
productId img
1          someimgurl
1          someimgurl2

Хотелось бы получить название, цену и изображения товара 1.

SELECT products.name, products.price, productimages.img  FROM products INNER JOIN productimages WHERE products.id=1

Этот запрос дает мне следующий результат:

[ {
    name: 'someproduct',
    price: 99,
    img:
     'someimg' },
   {
    name: 'someproduct',
    price: 99,
    img:
     'someimgurl2' }
]

Как видите, имя и цена повторяются. Что я пытаюсь получить, так это:

[ {
    name: 'someproduct',
    price: 99,
    img:[
     'someimgurl','someimgurl2'] },
]

1 Ответ

0 голосов
/ 24 января 2019

Вы можете использовать агрегацию , чтобы получить одну строку.Возможно:

SELECT p.name, p.price, GROUP_CONCAT(pi.img) as img
FROM products p INNER JOIN
     productimages pi
     on p.id = pi.product_id
WHERE p.id = 1
GROUP BY p.name, p.price;

Я также заметил, что у вас было предложение JOIN без ON.Это будет синтаксическая ошибка в любой базе данных, кроме MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...