powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста найти ошибку
8 сообщений из 8, страница 1 из 1
Помогите пожалуйста найти ошибку
    #39193272
sqlNovyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT `id`,

(SELECT  SUM(`totalPrice`) FROM (
SELECT `subGoodId`, `subGoodQuantity`, `totalPrice` FROM
(
SELECT `subGoodId`, `subGoodQuantity`,

( SELECT `price` FROM `tbl_catalog_catalog_prices` WHERE `objectId` = `subGoodId` ) AS `price`,
( (SELECT `price` FROM `tbl_catalog_catalog_prices` WHERE `objectId` = `subGoodId`) * `subGoodQuantity` ) AS `totalPrice`

FROM `tbl_catalog_subgoods` WHERE `goodId` = 1608
    )
    as newTable    
) as newTableSum) AS `priceCalculated`

FROM `tbl_catalog_catalog` WHERE `id` NOT IN (SELECT `objectId` FROM `tbl_catalog_catalog_prices`)

Срабатывает правильно. Но мне нужно чтобы он работал динаминчо в таком виде:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT `id`,

(SELECT  SUM(`totalPrice`) FROM (
SELECT `subGoodId`, `subGoodQuantity`, `totalPrice` FROM
(
SELECT `subGoodId`, `subGoodQuantity`,

( SELECT `price` FROM `tbl_catalog_catalog_prices` WHERE `objectId` = `subGoodId` ) AS `price`,
( (SELECT `price` FROM `tbl_catalog_catalog_prices` WHERE `objectId` = `subGoodId`) * `subGoodQuantity` ) AS `totalPrice`

FROM `tbl_catalog_subgoods` WHERE `goodId` = `id`
    )
    as newTable    
) as newTableSum) AS `priceCalculated`

FROM `tbl_catalog_catalog` WHERE `id` NOT IN (SELECT `objectId` FROM `tbl_catalog_catalog_prices`)

то есть WHERE `goodId` должен равняться не 1608, а должен равняться `id` из первой строчки.

Во втором случае запрос работает неправильно.
Понимаю что проблема в присвоении `goodId` = `id` , но не знаю как исправить.
Помогите пожалуйста.
Заранее спасибо.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39193292
sqlNovyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В посте пытался выделить нужное жирным ... .
Но почему-то вывелся код html.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39193459
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlNovyiНо почему-то вывелся код html.Убрал. Пропустил, когда код тегами оформлял.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39193466
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlNovyiто есть WHERE `goodId` должен равняться не 1608, а должен равняться `id` из первой строчки. Нельзя в условии отбора использовать значения выходного набора.

sqlNovyiПомогите пожалуйста найти ошибку
Разумнее сформулировать решаемую задачу (включая структуры хранения), а не просить разобраться в Ваших попытках эту задачу решить.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39193492
sqlNovyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторНельзя в условии отбора использовать значения выходного набора.
понял.

авторРазумнее сформулировать решаемую задачу (включая структуры хранения), а не просить разобраться в Ваших попытках эту задачу решить.
Собственно, нужен запрос (который будет подзапросом другого) который будет выборкой с двумя столбцами - id и suma .

id берется из - SELECT `id` FROM `tbl_catalog_catalog` WHERE `id` NOT IN (SELECT `objectId` FROM `tbl_catalog_catalog_prices`),
а sumа из сложного запроса в котором фигурирует id из вышеприведенного запроса
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39193584
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это опять не задача, а Ваши потуги на решение.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39199611
sqlNovyi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Долго бился, но решения так и не нашел.
Постараюсь сформулировать.

Есть таблица tbl_catalog_catalog (в ней id товара) и tbl_catalog_catalog_prices (в ней price товара, tbl_catalog_catalog.id = tbl_catalog_catalog_prices.goodId ).

Однако, в tbl_catalog_catalog_prices есть есть не все товары из tbl_catalog_catalog, а только те для которых существует price.

Мне нужно запросом выбрать все товары из tbl_catalog_catalog и соответствующие им цены из tbl_catalog_catalog_prices.

А для тех товаров у которых нет соответствия в tbl_catalog_catalog_prices цена должна высчитываться запросом из нескольких других таблиц по определенному алгоритму.

Этот запрос (алгоритм) у меня получилось написать для отдельного товара (id).
Но собрать все в кучу не получается.

Спасибо за внимание к моему вопросу.
...
Рейтинг: 0 / 0
Помогите пожалуйста найти ошибку
    #39199775
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sqlNovyiЭтот запрос (алгоритм) у меня получилось написать для отдельного товара (id).
Ну так и используйте его как коррелированный подзапрос в качестве второго аргумента функции COALESCE().

sqlNovyiЕсть таблица

Таблицы принято давать в форме CREATE TABLE. Удалив всё лишнее для сути вопроса, само собой.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста найти ошибку
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]