У меня 2 стола category и orderrows
Структура таблицы категорий
id name parent_id
1 c1 null
2 c2 null
3 c3 2
4 c4 1
5 c5 2
6 c6 5
7 c7 5
Структура таблицы заказов
id category amount
1 1 100
2 6 100
3 5 100
4 4 100
5 3 100
6 2 100
7 7 100
8 2 100
Я пытаюсь присоединиться к 2 таблицам, чтобы получить общую сумму только на родительском уровне
Результат:
category total
1 200
2 600
Есть ли способ написать sql в MySQl для получения результата.
Результаты в основном получают все отношения между родительскими и дочерними элементами и выводят общую сумму только на родительском уровне.
В MySQL 5.5+ есть метод @TheImpaler из-за пользовательских переменных, но он довольно хитрый stackoverflow.com/questions/20215744/…
См .: Почему я должен предоставлять MCVE для того, что мне кажется очень простым запросом SQL?
@Raymond: если он не использует переменные. Их сложно писать и отлаживать. К тому же эти запросы очень неэффективны для больших наборов строк.
@TheImpaler Нет, это не так. Кроме того, это не было сутью вашего первоначального аргумента - я согласен, что версия 8.0 значительно упростила этот процесс.
@Strawberry Не хочу здесь начинать «религиозную войну», но нет способа установить «условие остановки» при использовании переменных. Вы во власти строк таблицы.
«Плюс эти запросы очень неэффективны для больших наборов строк». В MySQL 5.5 / 5.7 я бы предпочел использовать пользовательскую переменную MySQL для имитации ранжирования (ROW_NUMBER()), а затем связанный подзапрос с COUNT () для больших наборов данных, чтобы дать вам пример .. @ TheImpaler "Их сложно писать и отлаживать" Это правда, что вам нужно знать, как их писать и правильно использовать, если вы знаете, как они работают. Это похоже на запись (1 + 1) AS alias.






В MySQL 8.0 да. В MySQL 5.x вам не повезло.