Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает INTERSECT / 21 сообщений из 21, страница 1 из 1
26.03.2016, 13:45
    #39201145
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Здравствуйте.

СУБД - MySQL
Команда INTERSECT должна вернуть пересечение результатов запросов.

Есть таблица t1 (Имеет колонку 'a' типа int. В таблице 5 строк со следующими значениями: 1,2,3,4,5 )
Есть таблица t2 (Имеет колонку 'a' типа int. В таблице 5 строк со следующими значениями: 1,2,3,6,7 )

Соответственно, запрос

SELECT * FROM t1
INTERSECT
SELECT * FROM t2

Должен вернуть таблицу, содержащую 1 колонку и 3 строки со значениями 1,2,3.
Т.к. это пересечение данных множеств.
Но результат запроса получается такой: 1,2,3,6,7 (см. скриншот https://yadi.sk/i/LbFqeYwsqVQmC )
Почему так?!
...
Рейтинг: 0 / 0
26.03.2016, 16:18
    #39201181
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87,

У вас точно MySQL?

В MySQL нет INTERSECT вообще.
...
Рейтинг: 0 / 0
28.03.2016, 14:15
    #39202104
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoft, благодарю за ответ.
У меня установлен пакет "XAMPP". И открыв контрольную панель можно увидеть, что запущен именно MySQL (см. скриншот https://yadi.sk/i/_bgWdOIKqXqLA )

Однако, если выполнить запрос с синтаксической ошибкой, то phpMyAdmin в сообщении с ошибкой говорит что используется "MariaDB" (см. скриншот https://yadi.sk/i/Rg3pn7TSqXqev ).

Это нормальная ситуация?
...
Рейтинг: 0 / 0
28.03.2016, 15:10
    #39202195
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87,

Не вижу упоминания в доке MariaDB, что она умеет INTERSECT.
Возможно, просто не нашел, т.к. дока там на порядок хуже по струтуре.

В сторонних источниках вижу массу явных упоминаний, что INTERSECT в MariaDB нет.
...
Рейтинг: 0 / 0
28.03.2016, 15:13
    #39202203
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Покажите вывод этих команд:
Код: sql
1.
SELECT VERSION()

Код: sql
1.
SHOW VARIABLES LIKE 'version%'
...
Рейтинг: 0 / 0
28.03.2016, 15:23
    #39202219
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoftПокажите вывод этих команд:
Код: sql
1.
SELECT VERSION()



Код: sql
1.
SHOW VARIABLES LIKE 'version%'




10.1.10-MariaDB
Скриншот: https://yadi.sk/i/UVjOgF9rqY2JB
...
Рейтинг: 0 / 0
28.03.2016, 15:28
    #39202225
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
По исходному скриншоту могу предположить, что вывелось только то, что было выбрано первым SELECT-ом до INTERSECT-а.
Почему работает именно так, а не выдает ошибку - не понятно.
...
Рейтинг: 0 / 0
28.03.2016, 15:32
    #39202231
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoft,
Скажите, а как такое возможно что в комплектации пакета указано что субд Mysql, а на самом деле там MariaDB? Т.е. это просто косяк сборки пакета? Ведь, насколько я понял, эти субд имеют существенные отличия, и равенство между ними поставить никак нельзя.
...
Рейтинг: 0 / 0
28.03.2016, 15:35
    #39202238
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87miksoft,
Скажите, а как такое возможно что в комплектации пакета указано что субд Mysql, а на самом деле там MariaDB? Т.е. это просто косяк сборки пакета? Ведь, насколько я понял, эти субд имеют существенные отличия, и равенство между ними поставить никак нельзя.Нет между ними существенных отличий.
MariaDB это форк MySQL.
Какие-то отличия, конечно, есть. Но не в базовых вещах.
...
Рейтинг: 0 / 0
28.03.2016, 16:25
    #39202301
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87,

SELECT t1.* FROM t1 JOIN t2 WHERE t1.a=t2.a
...
Рейтинг: 0 / 0
29.03.2016, 13:25
    #39203139
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Alex_Ustinov,
Вопрос был в том, почему не работает intersect, а не как написать альтернативную версию запроса.
...
Рейтинг: 0 / 0
29.03.2016, 13:34
    #39203157
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87Вопрос был в том, почему не работает intersect
Потому что
miksoftВ MySQL нет INTERSECT вообще.
...
Рейтинг: 0 / 0
29.03.2016, 13:52
    #39203184
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoft,
установил MySQL Community Server 5.7.11
При использовании команды INTERSECT система сообщает о ошибке синтаксиса (см. ниже приведен текст из консоли).

mysql> SHOW VARIABLES LIKE 'version%';
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| version | 5.7.11-log |
| version_comment | MySQL Community Server (GPL) |
| version_compile_machine | x86_64 |
| version_compile_os | Win64 |
+-------------------------+------------------------------+
4 rows in set, 1 warning (0.00 sec)

mysql> Select * from t1;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+
5 rows in set (0.00 sec)

mysql> Select * from t2;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 6 |
| 7 |
+----+
5 rows in set (0.00 sec)

mysql> Select * from t1 intersect select * from t2;
ERROR 1064 (42000): 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 * from t2' at line 1


Хочется докопаться до истины. Иначе не понятно, как изучать SQL запросы. Решаю задачки на сайте http://sql-ex.ru/. Там написано что используется СУБД MySQL. На их сайте запросы с использованием оператора INTERSECT отрабатывают верно. Вместе с тем, в сети куча статей об использовании данного оператора в рамках работы с субд MySQL. Т.е. судя по всему оператор рабочий, люди пользуются. Однако на Mysql сервере, скаченном с офф сайта оператор почему-то не работает вообще (см скриншот https://yadi.sk/i/NUguluLwqZVce ). На MariaDB, входящей в состав пакета XAMPP оператор отрабатывает без синтаксической ошибки, однако данные выводит не верные.
Бардак какой-то... нет слов, одни маты.
Вопрос принципиальный, т.к. для дальнейшего изучения синтаксиса MySQL, хочется понимать где всё-таки эти запросы тестить.
...
Рейтинг: 0 / 0
29.03.2016, 13:59
    #39203194
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87Решаю задачки на сайте http://sql-ex.ru/. Там написано что используется СУБД MySQL.Не совсем так:
В настоящее время на рейтинговых этапах мы используем Microsoft SQL Server 2012, а на обучающем этапе - дополнительно MySQL 5.5.11, PostgreSQL 9.0 и Oracle Database 11g.Да и сколь я помню, они всегда ориентировались на MS SQL. Остальные СУБД у них появились позже и, видимо, поддерживаются не полностью.
...
Рейтинг: 0 / 0
29.03.2016, 14:00
    #39203195
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Господа, благодарю за помощь, кажется разобрался, тема закрыта.
...
Рейтинг: 0 / 0
29.03.2016, 14:01
    #39203196
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoft,
спасибо!!!
...
Рейтинг: 0 / 0
29.03.2016, 14:06
    #39203201
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
miksoftДа и сколь я помню, они всегда ориентировались на MS SQL. Остальные СУБД у них появились позже и, видимо, поддерживаются не полностью.

MS SQL - это на сегодняшний день самая популярная СУБД?
Мне почему-то казалось что самая распространенная это MySQL.
...
Рейтинг: 0 / 0
29.03.2016, 14:24
    #39203233
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87MS SQL - это на сегодняшний день самая популярная СУБД?
Мне почему-то казалось что самая распространенная это MySQL.Это отдельный холиварный вопрос.
У этих СУБД довольно слабо пересекается область применения, поэтому по количеству инсталляций сравнивать смысла мало.
...
Рейтинг: 0 / 0
29.03.2016, 14:44
    #39203264
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Oleg87,

почему-то для обучения на sql-exec.ru устанавливают MySQL. Хотя лучше будет установить SQL Server Express Edition
...
Рейтинг: 0 / 0
29.03.2016, 14:55
    #39203283
Oleg87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
Alex_Ustinov,

почему?
Вообще, изучению какой субд отдать предпочтение начинающему backend разработчику?
...
Рейтинг: 0 / 0
29.03.2016, 15:15
    #39203303
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает INTERSECT
это про sql-exec.ru
miksoft Да и сколь я помню, они всегда ориентировались на MS SQL. азы можно "учить" на любой СУБД.
Затем ознакомиться с каждой.
Я бы все таки посоветовал PostgreSQL. Она более общая в смысле функционала. Чуть похожа на Оракле, чуть на SQL server.
MySQL проста в установке, можно всегда держать под рукой...
Если будете заниматься web-сайтами и web-нитерфесом, то чаще столкнетесь с MySQL.
Для небольших приложений с использованием СУБД хватает бесплатных MySQL/Postgresql/Firebird. Ниша Оракла и СКЛсервера более тяжелая... Хотя Postgresql тоже достаточно мощен...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не работает INTERSECT / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]