Войти

Показать полную графическую версию : Вложенный SELECT в MySQL


LEXX2002
02-09-2005, 10:52
На локальной машине без проблем работает запрос типа

SELECT *
FROM user
WHERE id=(
SELECT user
FROM session
WHERE time > '1125637216'
AND id_session = '395a041d31c8a0dae64ad8d9ca33228c'
LIMIT 1
)
LIMIT 1


На хостинге выдает ошибку, #1064 - You have an error in your SQL syntax..

Кто сталкивался с такой проблемой, как её решали, не хочется переписывать в 2 запроса.

LEXX2002
02-09-2005, 11:11
а, вот нашёл как можно подругому составить запрос:

пример:

SELECT onum, amt, odate, cnum, Orders.snum
FROM Orders, Salespeople
WHERE Orders.snum = Salespeople.snum
AND Salespeople.city = "London";

то что мне нужно, но как написано в мануале:

Хотя это и произведет тот же самый вывод что и в примере с подзапро-
сом, SQL должен будет просмотреть каждую возможную комбинацию строк из
двух таблиц и проверить их снова по составному предикату.

XCodeR
02-09-2005, 17:59
SELECT *
FROM user
WHERE id=(
SELECT user
FROM session
WHERE time > '1125637216'
AND id_session = '395a041d31c8a0dae64ad8d9ca33228c'
LIMIT 1
)
LIMIT 1
о ужас!...
SELECT onum, amt, odate, cnum, Orders.snum
FROM Orders, Salespeople
WHERE Orders.snum = Salespeople.snum
AND Salespeople.city = "London";
так намного лучше....

LEXX2002
02-09-2005, 21:34
да, только таблица большая, и сравнивать каждую строчку с каждой строчкой не очень хорошо, представляю какие будут торомоза в будушем, так что ничего не остаётся делать как всё это писать в 2 запроса.

Prisoner
03-09-2005, 12:56
На хостинге стоит mySQL ветки не 4.1. Потому подзапросы и трактуются как ошибка синтаксиса. Потому-то и ориентироваться надо не на то, что дома, а что на сервере.

LEXX2002
03-09-2005, 16:58
да, в суппорте хостинга мне сказали что у них другая версия. Но удобно же когда можно одним запросом обработать, согласись

E-mail
05-09-2005, 23:52
а разве вложенные запросы mysql версии младше 5.0 понимает?

scazy
06-09-2005, 00:07
с версии 4.1 реализованно




© OSzone.net 2001-2012