Я создаю веб-приложение, которое должно ссылаться на данные из одного представления.
Я знаю, что я не могу иметь предложение from в подзапросе в представлении создания или замены, но мне удалось найти только одну версию этого запроса, которая возвращает нужный мне результат.
После нескольких часов траления через посты здесь я не мог придумать никаких решений для этого. Есть ли кто-то с большим количеством смартфонов, чем у меня, который может повторно подделать этот запрос таким образом, чтобы все данные могли быть возвращены в одном представлении? Вот запрос...
CREATE
OR REPLACE VIEW in_stock_levels AS
SELECT
*,
'in_stock' - 'maximum_stock' AS levels
FROM(
SELECT
stock_levels.id AS id,
stock_levels.part_number AS part_number,
stock_levels.minimum_stock AS minimum_stock,
stock_levels.maximum_stock AS maximum_stock,
(
SELECT
COUNT(*)
FROM
automatic_transmission_jobs
WHERE
part_number = stock_levels.part_number
AND test_result != "Not Tested"
AND status != "pwa"
) AS in_stock
FROM
stock_levels
) AS check_stock
Буду признателен за любую оказанную помощь.
Выполнение этого так работает, я знаю, что это не самый эффективный,
CREATE
OR REPLACE VIEW in_stock_levels AS
SELECT
stock_levels.id AS id,
stock_levels.part_number AS part_number,
stock_levels.minimum_stock AS minimum_stock,
stock_levels.maximum_stock AS maximum_stock,
(
SELECT
COUNT(*)
FROM
automatic_transmission_jobs
WHERE
part_number = stock_levels.part_number
AND test_result != "Not Tested"
AND status != "pwa"
) AS in_stock,
(
SELECT
COUNT(*)
FROM
automatic_transmission_jobs
WHERE
part_number = stock_levels.part_number
AND test_result != "Not Tested"
AND status != "pwa"
) - stock_levels.maximum_stock AS stock_level
FROM
stock_levels
Спасибо за вашу помощь Инго :)
Не имея дополнительной информации о вашей схеме, но исходя из того, что вы опубликовали, следующий запрос должен работать для вашего CREATE ИЛИ REPLACE VIEW...
SELECT
stock_levels.id,
stock_levels.part_number,
stock_levels.minimum_stock,
stock_levels.maximum_stock,
COUNT(automatic_transmission_jobs.id) AS in_stock,
in_stock - maximum_stock AS levels
FROM stock_levels
LEFT OUTER JOIN automatic_transmission_jobs USING (part_number)
WHERE
automatic_trasmission_jobs.test_result != 'Not Tested'
AND automatic_trasmission_jobs.status !='pwa'
GROUP BY stock_levels.id;
Используете ли вы phpMyAdmin или MySQLWorkbench для разработки и тестирования ваших запросов?