SQL-запросы внутри запроса

У меня есть таблица со столбцами main_article, sub_article, qty. У меня может быть одна main_article, которая может иметь как sub_article одну статью, которая также может быть в таблице как main_article

main_article | sub_article| qty
-------------+------------+----
20           |     4      |  15
20           |     6      |  14
22           |     4      |  12
22           |    33      |  2
22           |    20      |  10

Мне нужно получить значения для main_article 22 с sub_articles из main_article 20 с количеством sub_articles, умноженным на количество 10, учитывая таблицу, подобную следующей.

main_article | sub_article| qty
-------------+------------+-----
22           |      4     |  150
22           |      6     |  140
22           |      4     |  12
22           |     33     |  2

Я пробовал несколько подходов с JOIN, SELECT FROM все безуспешно.

Я могу получить значение main_article, которое имеет sub_articles, с помощью:

select 
    ac.main_article, ac.sub_article, ac.qty 
from 
    compose_articles ac 
where 
    ac.main_article in (select ac2.subarticle from compose_articles ac2);

И получить значения из подстатьи по

select * 
from compose_articles ac 
where sub_article in (select ac2.main_article from compose_articles ac2); 

Пожалуйста, обновите свой вопрос с помощью запросов, которые вы пробовали.

kometen 01.08.2023 10:04

Пожалуйста, обновите свой вопрос, а не добавляйте дополнительную информацию в комментарии

NickW 01.08.2023 10:15

извините, первый раз прошу помощи

marco 01.08.2023 10:23
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
3
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основываясь на вопросе, сначала извлеките основные статьи, которые являются подстатьями, а затем рассчитайте количество. Наконец, выберите из основной таблицы и исключите основные/дополнительные статьи, которые являются подстатьями. Ниже запрос поможет

WITH sub_articles AS(
    SELECT main_article, sub_article,qty FROM compose_articles 
    WHERE sub_article IN (SELECT main_article FROM compose_articles)
),
calculated_subarticles AS (
    SELECT a.main_article,b.sub_article, a.qty * b.qty as qty FROM sub_articles a
    JOIN compose_articles b ON a.sub_article = b.main_article
)
SELECT * FROM compose_articles 
WHERE main_article NOT IN (SELECT sub_article FROM sub_articles) 
AND sub_article NOT IN (SELECT sub_article FROM sub_articles)
UNION
SELECT * FROM calculated_subarticles

Другие вопросы по теме