Выборка списка внешнего ключа в одном операторе MySQL

#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 строку