Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> субконсульта 
V
    Опции темы
ressac
Дата 8.3.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



Код

SELECT namen
FROM emp
WHERE IdEmp
IN (

SELECT DISTINCT IdEmp -- это вовращает три простых цифры (1,2,3)
FROM ped 

)


получаю ошибку 
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT  DISTINCT IdEmp
FROM ped ) LIMIT 0, 30' at line 5 

и где это ошибка? smile

я до этого сидел за oracle ... тут вроде теже самые правла...
PM MAIL   Вверх
Fortop
Дата 8.3.2008, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Код

LIMIT 0, 30


Почему в ошибке у тебя есть это, а в коде нет?

Да, а ругается собственно на наличие подзапроса в IN (тут)

Это сообщение отредактировал(а) Fortop - 8.3.2008, 19:37


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
ressac
Дата 8.3.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



Fortop
Цитата(Fortop @  8.3.2008,  17:24 Найти цитируемый пост)
LIMIT 0, 30

не до писал, но это не важно


Цитата(Fortop @  8.3.2008,  17:24 Найти цитируемый пост)
Да, а ругается собственно на наличие под запроса в IN (тут)


ну это я понял, а вот почему? smile 
хотя с уверенностью сказать могу что написано без ошибок... , тойсть проблема наверно в самом mysql

PM MAIL   Вверх
Fortop
Дата 8.3.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Проверь запросом из своего кода, не через phpMyAdmin


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
ressac
Дата 8.3.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



Fortop, проверял --> false
PM MAIL   Вверх
skyboy
Дата 8.3.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(ressac @  8.3.2008,  20:52 Найти цитируемый пост)
проверял --> false 

очень четкий и понятный ответ. отлично!
тоже выдает ошибку? или ничего не возвращает?
какая версия сервера MYSQL?(проверить можно при помощи функции VERSION())
PM MAIL   Вверх
ressac
Дата 8.3.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



skyboy, извиняюсь

Код

 VERSION( )
4.0.18-nt


Код

Error

consulta SQL : 

SELECT *
FROM empleados
WHERE idemp = (
SELECT idemp
FROM pedidos )
LIMIT 0 , 30

MySQL :
#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT idemp
FROM pedidos )  LIMIT 0, 30' at line 4 



/********************************************************/
PHP:

Код

$f=mysql_query("
select  * 
from empleados
where idemp=(
    select idemp
    from pedidos)
");

echo mysql_errno($c)." - ".mysql_error($c);
mysql_close($c);


Код

1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select idemp from pedidos)' at line 4

PM MAIL   Вверх
skyboy
Дата 8.3.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(ressac @  8.3.2008,  22:17 Найти цитируемый пост)
4.0.18-nt

если можешь поставить что-нибудь из 5 ветки(т.е. версии 5.0 и выше) - лучше сделай. четвертая ветка была очень ущербна в плане подзапросов. особенно - версии до 4.1

PM MAIL   Вверх
SelenIT
Дата 9.3.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 6
Всего: 401



Любой подзапрос можно переписать через эквивалентный джойн - будет работать даже на 3.23. Для данного случая, по идее, как-то так:
Код

SELECT empleados.*
FROM empleados
INNER JOIN pedidos
USING idemp
GROUP BY pedidos.idemp



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
ressac
Дата 9.3.2008, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



SelenIT, да я так и сделал, просто интересно было почему не работала суб-консульта.


skyboy, спасиб.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0896 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.