1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
||||||
1 | ||||||
Не передаются поля в подзапрос17.09.2022, 09:06. Показов 1046. Ответов 25
Метки нет (Все метки)
Приветствую.
mysql 5 Не могу передать поле в подзапрос. Пример:
Дело в том что поле из UPDATE tb.ServiceID не передаётся дальше в подзапрос SELECT FROM tb2 и на этом приплыли. Пишет поле не найдено. Как это можно передать? Просто там очень много вложенных подзапросов ссылающихся на поля в UPDATE tb. Причём на mysql 8 оно работает как надо.
0
|
17.09.2022, 09:06 | |
Ответы с готовыми решениями:
25
Oracle После несколько подзапрос не магу отфильтровать поля Неверно передаются вычисляемые поля из Acceess в Excel Не передаются даные поля базового класса в класс наследник Не передаются даные поля базового класса в класс наследник |
385 / 224 / 83
Регистрация: 28.04.2022
Сообщений: 1,117
|
|
17.09.2022, 13:18 | 2 |
Scally, А через JOIN'ы нельзя это записать?
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
17.09.2022, 15:49 [ТС] | 3 |
UPDATE
JOIN (SELECT FROM) SET WHERE В SELECT уже никак поля из UPDATE не поподают Без селектов никак. Они в подзапросах там с UNION ещё к тому-же. Там агрегируется из разных таблиц с хитрыми условиями и сортировками. Только SELECT
0
|
1928 / 1163 / 423
Регистрация: 31.05.2012
Сообщений: 4,112
|
||||||
17.09.2022, 17:28 | 4 | |||||
а где Cost во вложенном подзапросе? А нет. Может так:
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
18.09.2022, 07:26 [ТС] | 5 |
Это я все знаю. Запрос накидан для примера. Конечно в оригинале все алиасы строго соблюдены.
Ещё раз напишу, что в 8й версии работает, а в 5й нет. Из этого вытекает вопрос: как передать поля от UPDATE в подзапросы? И конечно там стоит LIMIT 1, что-б подзапрос вернул одно последнее значение цены.
0
|
1928 / 1163 / 423
Регистрация: 31.05.2012
Сообщений: 4,112
|
|
18.09.2022, 08:54 | 6 |
так показывай оригинальный запрос, а не запрос для примера да еще с ошибками
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
18.09.2022, 10:19 [ТС] | 7 |
Еще раз объясню, если не понятно. Проблема не в запросе, все работает на 8й версии.
Проблема как заставить работать на 5й. А ещё конкретнее - как передать поля из UPDATE во вложенные в него подзапросы. Для этого не нужно даже преводить примеры. Вопрос понятен с первого раза.
0
|
385 / 224 / 83
Регистрация: 28.04.2022
Сообщений: 1,117
|
|
18.09.2022, 17:10 | 8 |
Scally, Я давно в каком-то мануале (не помню по какой СУБД и какой версии) читал, что конструкции UPDATE-SELECT не поддерживаются в должной мере, и их работоспособность не гарантируется. Так что вполне возможно, что это относится и к MySQL, и 5-я версия не поддерживает таких запросов.
И если необходимо использовать именно эту версию сервера, то надо либо переписывать конструкцию запроса, либо задействовать принципиально другой подход в разработке. Т.е. ответ должен быть понятен с первого раза. И даже до постановки вопроса.
0
|
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
|
|
18.09.2022, 18:15 | 9 |
А вот и не понятно, работает на 8й, так этих версий начиная от 8.0.0dmr до последней (8.0.28) достаточно много. А уж про 5 версию "воотще" говорить не стоит. Таковых доступных для скачивания с официального сайта до
Может тебе и понятен вопрос, даже подозреваю, что понятен с первого раза, а вот минимально самодостаточные примеры демонстрирующие ошибку привести было бы неплохо Не по теме: для примера посмотри на одно из моих сообщений об ошибке раздел How to repeat
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
19.09.2022, 10:42 [ТС] | 10 |
Joeymax, пойми пожалуйста. Ошибок нет. Ну нет и всё. Не нужен для этого мой пример. Ошибок нет. И ещё раз: Ошибок нет.
Есть простой вопрос: Как можно передать поля в подзапрос. Такой вопрос не подразумивает наличие ошибок. Ошибок нет. И не нужно за меня решать, что мне надо всё переписать и не использовать подзапросы. Это не возможно. Такой функционал. Обратите внимание пожалуйста на мой вопрос: Как можно передать поля в подзапрос? Пример был для понимания вопроса. Версия 5я у хостинга. И ничего тут не поделать. Нет у него 8й и не предвидится.
0
|
1928 / 1163 / 423
Регистрация: 31.05.2012
Сообщений: 4,112
|
|
19.09.2022, 11:50 | 11 |
ну коль пишешь update с подзапросами должен знать что единственный способ передать ИмяИлиПсевдонимТаблцы.ИмяПоля. Всё. А судя по примеру возможно у тебя в запролсе наворочено огого. А показать - секрет. Ну и живи с ним ))
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
19.09.2022, 11:53 [ТС] | 12 |
Аватар, логика видимо не твой конёк. Вопроса бы не было, если-бы в подзапрос поля передавались.
А для танкистов: в 8й версии работает.
0
|
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
|
|
19.09.2022, 13:56 | 13 |
Понятно, но давай переведем диалог в конструктивное русло. Я не буду посылать тебя читать Eric S. Raymond, а ты не будешь говорить, куда мне идти
тогда еще раз Был не прав, признаю ошибок у тебя нет. Но ещё раз. И ещё раз, минимально самодостаточный пример демонстрирующий твою хотелку можешь привести. Не по теме: Например в таком виде (только для танкиста)
1
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
||||||
19.09.2022, 14:50 [ТС] | 14 | |||||
0
|
Joeymax
|
19.09.2022, 15:54
#15
|
Не по теме: Браво!, салют!, восхитительно!, искренне ваш :)
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
19.09.2022, 16:04 [ТС] | 16 |
Я так понял, что толкового ответа на этот вопрос я не дождусь.
Столько умников, но никто не знает. Пока сделал в два захода: Одним заходом собираю данные ID и прочее из таблицы tb1 и на их основе создаю нужное количество UPDATE c этими значениями через ";"
0
|
385 / 224 / 83
Регистрация: 28.04.2022
Сообщений: 1,117
|
|
19.09.2022, 16:13 | 17 |
Scally, На мой вопрос тоже ответа нет: почему нельзя эту конструкцию переписать через JOIN?
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
19.09.2022, 16:19 [ТС] | 18 |
Ответ на этот вопрос есть:
"-- и ещё таблицы с подзапросами, и не такие простые, как tb2 b tb3 из которых надо получить цены по куче условий с использованием tb1.ServiceID и в заданном порядке." Там подзапросы в подзапросе и выборка в одном невозможна, т.к своих JOIN там внутри хватает. Расскажешь как в JOIN - LIMIT 1 поставить?
0
|
1177 / 419 / 106
Регистрация: 31.03.2012
Сообщений: 1,145
|
|
19.09.2022, 16:20 | 19 |
0
|
1 / 0 / 1
Регистрация: 04.01.2014
Сообщений: 16
|
|
19.09.2022, 16:22 [ТС] | 20 |
Когда ответов нет - остаётся только отшучиваться.
0
|
19.09.2022, 16:22 | |
19.09.2022, 16:22 | |
Помогаю со студенческими работами здесь
20
Не передаются даные поля базового класса в класс наследник При передаче данных через AJAX не передаются некоторые поля формы DataMember: При наследовании от абстрактного класса передаются только поля базового типа Создаю новый тип поля, а значениия value не передаются - выводит пустой массив в сам шаблон В Debug режиме в VS-2012 данные передаются нормально, но при запуске без дебага возникают ошибки и данные не передаются Подзапрос Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |