#mysql #sql
#mysql #sql
Вопрос:
Я пытаюсь получить все единицы, связанные с продуктом, в одном запросе
Был бы признателен за любую помощь
Table Product
ID Product_Name
1 Tomato
2 Banana
3 Sugar
4 Potatto
Table Units
ID ProductID Quantity Unit
1 3 1 KG
2 3 2 KG
3 3 3 KG
4 3 5 KG
Expected Result
ID 1, Product_Name Sugar, [Quantity 1 Unit KG] [Quantity 2 Unit KG] [Quantity 3 Unit KG] [Quantity 5 Unit KG]
Комментарии:
1. откуда берутся остальные три столбца???
2. Какие результаты вы хотите?
3. Я хочу идентификатор 1, Product_Name Сахар, [Количество 1 ед. кг] [Количество 2 ед. кг] [Количество 3 ед. кг] [Количество 5 ед. кг]
4. Вы хотите, чтобы этот результат отображал
Quantity
столбцы по горизонтали или по вертикали?5. По горизонтали выводится только одна строка
Ответ №1:
После объединения Products
и Units
вы можете group
получить столбцы результирующего by
продукта, а затем с помощью GROUP_CONCAT
агрегатной функции получить желаемый список единиц измерения для продукта:
SELECT p.ID, p.Product_Name, GROUP_CONCAT(CONCAT('[Quantity:', u.Quantity, ' Unit:',u.Unit,']')) as UnitList
FROM Units u JOIN Product p
ON p.ID = u.ProductId
WHERE p.ID = 3 // or any other product id
GROUP BY p.ID, p.Product_Name
Комментарии:
1. Я хотел получить продукт, в продукте я хотел иметь единицы измерения, как в списке.
2. Я обновил ответ и предоставил решение, используя
join
.3. Но теперь я получаю 4 строки в качестве выходных данных. я хотел вывести 1 строку