|
|
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. СУБД - 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 ) Почему так?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2016, 13:45 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87, У вас точно MySQL? В MySQL нет INTERSECT вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2016, 16:18 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
miksoft, благодарю за ответ. У меня установлен пакет "XAMPP". И открыв контрольную панель можно увидеть, что запущен именно MySQL (см. скриншот https://yadi.sk/i/_bgWdOIKqXqLA ) Однако, если выполнить запрос с синтаксической ошибкой, то phpMyAdmin в сообщении с ошибкой говорит что используется "MariaDB" (см. скриншот https://yadi.sk/i/Rg3pn7TSqXqev ). Это нормальная ситуация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 14:15 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87, Не вижу упоминания в доке MariaDB, что она умеет INTERSECT. Возможно, просто не нашел, т.к. дока там на порядок хуже по струтуре. В сторонних источниках вижу массу явных упоминаний, что INTERSECT в MariaDB нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:10 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Покажите вывод этих команд: Код: sql 1. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:13 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
miksoftПокажите вывод этих команд: Код: sql 1. Код: sql 1. 10.1.10-MariaDB Скриншот: https://yadi.sk/i/UVjOgF9rqY2JB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:23 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
По исходному скриншоту могу предположить, что вывелось только то, что было выбрано первым SELECT-ом до INTERSECT-а. Почему работает именно так, а не выдает ошибку - не понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:28 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
miksoft, Скажите, а как такое возможно что в комплектации пакета указано что субд Mysql, а на самом деле там MariaDB? Т.е. это просто косяк сборки пакета? Ведь, насколько я понял, эти субд имеют существенные отличия, и равенство между ними поставить никак нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:32 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87miksoft, Скажите, а как такое возможно что в комплектации пакета указано что субд Mysql, а на самом деле там MariaDB? Т.е. это просто косяк сборки пакета? Ведь, насколько я понял, эти субд имеют существенные отличия, и равенство между ними поставить никак нельзя.Нет между ними существенных отличий. MariaDB это форк MySQL. Какие-то отличия, конечно, есть. Но не в базовых вещах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 15:35 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87, SELECT t1.* FROM t1 JOIN t2 WHERE t1.a=t2.a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2016, 16:25 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, Вопрос был в том, почему не работает intersect, а не как написать альтернативную версию запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 13:25 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87Вопрос был в том, почему не работает intersect Потому что miksoftВ MySQL нет INTERSECT вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 13:34 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
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, хочется понимать где всё-таки эти запросы тестить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 13:52 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87Решаю задачки на сайте http://sql-ex.ru/. Там написано что используется СУБД MySQL.Не совсем так: В настоящее время на рейтинговых этапах мы используем Microsoft SQL Server 2012, а на обучающем этапе - дополнительно MySQL 5.5.11, PostgreSQL 9.0 и Oracle Database 11g.Да и сколь я помню, они всегда ориентировались на MS SQL. Остальные СУБД у них появились позже и, видимо, поддерживаются не полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 13:59 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Господа, благодарю за помощь, кажется разобрался, тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:00 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
miksoft, спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:01 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
miksoftДа и сколь я помню, они всегда ориентировались на MS SQL. Остальные СУБД у них появились позже и, видимо, поддерживаются не полностью. MS SQL - это на сегодняшний день самая популярная СУБД? Мне почему-то казалось что самая распространенная это MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:06 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87MS SQL - это на сегодняшний день самая популярная СУБД? Мне почему-то казалось что самая распространенная это MySQL.Это отдельный холиварный вопрос. У этих СУБД довольно слабо пересекается область применения, поэтому по количеству инсталляций сравнивать смысла мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:24 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Oleg87, почему-то для обучения на sql-exec.ru устанавливают MySQL. Хотя лучше будет установить SQL Server Express Edition ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:44 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
Alex_Ustinov, почему? Вообще, изучению какой субд отдать предпочтение начинающему backend разработчику? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 14:55 |
|
||
|
Не работает INTERSECT
|
|||
|---|---|---|---|
|
#18+
это про sql-exec.ru miksoft Да и сколь я помню, они всегда ориентировались на MS SQL. азы можно "учить" на любой СУБД. Затем ознакомиться с каждой. Я бы все таки посоветовал PostgreSQL. Она более общая в смысле функционала. Чуть похожа на Оракле, чуть на SQL server. MySQL проста в установке, можно всегда держать под рукой... Если будете заниматься web-сайтами и web-нитерфесом, то чаще столкнетесь с MySQL. Для небольших приложений с использованием СУБД хватает бесплатных MySQL/Postgresql/Firebird. Ниша Оракла и СКЛсервера более тяжелая... Хотя Postgresql тоже достаточно мощен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2016, 15:15 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39203283&tid=1831990]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
152ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 231ms |
| total: | 494ms |

| 0 / 0 |
