Показать полную графическую версию : Вложенный 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 должен будет просмотреть каждую возможную комбинацию строк из
двух таблиц и проверить их снова по составному предикату.
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
да, в суппорте хостинга мне сказали что у них другая версия. Но удобно же когда можно одним запросом обработать, согласись
а разве вложенные запросы mysql версии младше 5.0 понимает?
с версии 4.1 реализованно
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.