Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: NOT IN не срабатывает

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
karamba
Отправлено: 04 Декабря, 2015 - 22:13:57
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




запрос не срабатывает, выдает ошибку
Найдено 2 ошибок при анализе.
Неизвестное ключевое слово. (near "NOT IN" at position 34)
Неожиданный токен. (near "(" at position 41)

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `category` WHERE id NOT IN (SELECT `parent_category_id` FROM `category` WHERE `parent_category_id` IS NOT NULL)

Хотя если убрать NOT, то все работает
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `category` WHERE id IN (SELECT `parent_category_id` FROM `category` WHERE `parent_category_id` IS NOT NULL)

Или если явно указать значения тоже работает
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM `category` WHERE id NOT IN (1,2,3)
 
 Top
Мелкий Супермодератор
Отправлено: 04 Декабря, 2015 - 22:24:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Текст ошибки странный. Его точно отдаёт MySQL, а не что-то стороннее?

Вообще NOT IN (subquery) есть, заявлен как алиас для <> ALL: http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]-subqueries[dot]html


-----
PostgreSQL DBA
 
 Top
karamba
Отправлено: 05 Декабря, 2015 - 19:55:48
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Мелкий пишет:
Текст ошибки странный. Его точно отдаёт MySQL, а не что-то стороннее?

Вообще NOT IN (subquery) есть, заявлен как алиас для <> ALL: http://dev.mysql.com/doc/refman/5.7/en/all-subqueries.html

Тип сервера: MariaDB
Версия сервера: 10.0.17-MariaDB - mariadb.org binary distribution
Версия протокола: 10
 
 Top
Мелкий Супермодератор
Отправлено: 05 Декабря, 2015 - 20:25:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Действительно, с чего я взял, что речь вообще про mysql Ха-ха

Не, там так же: https://mariadb[dot]com/kb/en/mariad[dot][dot][dot]queries-and-all/
Цитата:
NOT IN is an alias for <> ALL.


А клиент-то штатный консольный или что-то другое?


-----
PostgreSQL DBA
 
 Top
karamba
Отправлено: 05 Декабря, 2015 - 22:17:34
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Мелкий пишет:
Действительно, с чего я взял, что речь вообще про mysql Ха-ха

Не, там так же: https://mariadb[dot]com/kb/en/mariad[dot][dot][dot]queries-and-all/
Цитата:
NOT IN is an alias for <> ALL.


А клиент-то штатный консольный или что-то другое?

Не думал что SQL отличается в MySQL и MariaDB. Впрочем с <> ALL тоже не работает.
Цитата:
NOT IN is an alias for <> ALL.
если я не ошибаюсь это надпись гласит, что NOT IN тоже самое что и <> ALL.
Я пишу SQL запрос в phpMyAdmin
 
 Top
Мелкий Супермодератор
Отправлено: 05 Декабря, 2015 - 22:48:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




karamba пишет:
если я не ошибаюсь это надпись гласит, что NOT IN тоже самое что и <> ALL.

Оно самое и значит, ага.

karamba пишет:
Не думал что SQL отличается в MySQL и MariaDB

SQL неоднороден, у каждой СУБД свои отклонения и дополнения стандартов. А стандартов тоже несколько версий...
Так что лучше уточнять с конкретными СУБД.

Вообще странно.
Раскатил на тест:
MariaDB: 10.0.22-MariaDB-0+deb8u1
PMA: 4.2.12deb2+deb8u1
PHP слинкован с libmysql - 5.5.46
Для примера взял табличку:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `category` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `parent_category_id` int(10) UNSIGNED DEFAULT NULL,
  4.   `name` varchar(30) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB

И пару строк каких-то данных.
Запрос из первого поста выполняется нормально, как в консольном клиенте, так и из PMA


-----
PostgreSQL DBA
 
 Top
karamba
Отправлено: 06 Декабря, 2015 - 15:25:10
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Цитата:
Вообще странно.
Раскатил на тест:
MariaDB: 10.0.22-MariaDB-0+deb8u1
PMA: 4.2.12deb2+deb8u1
PHP слинкован с libmysql - 5.5.46
Для примера взял табличку:
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `category` (
  2.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3.   `parent_category_id` int(10) UNSIGNED DEFAULT NULL,
  4.   `name` varchar(30) NOT NULL,
  5.   PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB

И пару строк каких-то данных.
Запрос из первого поста выполняется нормально, как в консольном клиенте, так и из PMA

Спасибо за эксперимент. Я у себя переустановил СУБД. Точнее у меня XAMMP и я его полностью переустановил. И NOT IN стал работать нормально. Ненавижу такие ошибки, когда вроде все правильно и должно работать, а нифига не работает по непонятным причинам.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB