При написании нижеприведенного запроса он жалуется, что столбец «so.id» неизвестен! Следующий запрос отлично работает в MS SQL, но не в MySQL? Как написать вложенный запрос select в MySQL?Как создать вложенный SQL-запрос в MySQL?
Что это за эквивалент?
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st
WHERE st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor
WHERE sor.child = so.id)
)
)) as soi
on soi.objectid = so.id
where so.id < 100;
Мне нужно внутреннее соединение вложенного в SQL Select. Мой оператор select более сложный, чем выше, выше всего лишь упрощенная версия для объяснения вложенных таблиц.
Я также попробовал другие предложения:
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st, smart_objects as so
WHERE st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor
WHERE sor.child = so.id)
)
)) as soi
on soi.objectid = so.id
where so.id < 100;
Приведенный выше код идет в нескончаемом цикле, тогда я просто хочу, вложенная SQL для запуска для каждой строки родителя.
ОБНОВЛЕНО с ANSWER:
Как бы вы облегчите ниже запрос?
select so.*
from smart_objects as so
inner join (
SELECT st.objectid, st.issueid
FROM smart_targets as st, smart_objects as so
WHERE st.objectid = so.id
and st.issueid != 0
AND
( (st.objectid = so.id)
OR
(
st.objectid in (
SELECT sor.parent
FROM smart_objectrelations as sor, smart_objects as so
WHERE sor.child = so.id)
)
)
) as soi
on soi.objectid = so.id
Является ли это на самом деле работает в MS SQL? Эта скрипка работает ни в MySQL, ни в MS SQL 2008 или 2012: http://www.sqlfiddle.com/#!3/f32ce/1 –
Извините, но как проблема может быть ОБА, что so.id неизвестно и что запрос запускает бесконечный цикл? –
Обновлено. Как вы создавали в MySQL вложенные операторы select? Как вы запустили другой оператор select с каждой записью родителя? –