Forum Webscript.Ru
Общие => Базы данных => Тема начата: win_pup от 27 Февраля 2003, 15:01:46
-
Здравствуйте!...
Немного не понятно, почему так получается:
если я пишу запрос:
select * from table1 union all select * from table2
то всё работает нормально,
но стоит добавить скобки:
(select * from table1) union all (select * from table2)
и тогда результат пуст... :(
почему так происходит?...
Спасибо!...
-
версия?
у меня все Ок работает вне зависимости от скобочек.
-
да, извиняюсь, версию-то я забыл написать:
MySQL 4.0.9-gamma-nt
-
попробуй проапгрейдить и проверить, я на 4.0.11 проверяла - все работало нормально.
-
странно, апгрейдил до версии 4.0.11 - всё равно такая же проблема...
даже если написать простейший запрос:
select * from table
то работает, а если этот запрос в скобки поместить:
(select * from table)
то уже никак, результат пустой получается
-
Какуая ошибка выдается?
Таблица точно существеут? К базе правильно стукаешься?
-
да... таблица есть!... конект есть!...
а вот ошибку-то как раз и не выдаёт... :-/
(типа так и должно быть)
просто пустой результат запроса возвращает и всё!...
так ведь не должно быть по идее?...
-
На каком языке пишите?
Было бы неплохо посмотреть как вы формируете sql на этом языке программирования. Скорее всего дело именно в этом.
Уж (select * from table) должен работать
-
в принципе, пишу на PHP...
но дело в том, что именно ЭТОТ запрос я пишу напрямую к базе (для проверки правильности его выполнения) через программу администрирования mySQL_Front в закладке Query... поэтому, среда программирования тут не причём...
-
win_pup, во первых тестировать надо в первую очередь консольным клиентом, а не ГУИшными.
Во-вторых, если уж у вас не работает, то приведите пример маленький, что бы другие тоже могли проверить.
-
просто беру любую из таблиц и выполняю:
select * from <таблица>
работает!...
Обставляю всё это дело скобками:
(select * from <таблица>)
не работает!... :-(
-
Повторяю еще раз: приведи пример!
У меня для любой таблицы все работает замечательно.
mysql> create table u1(
-> id int);
Query OK, 0 rows affected (0.16 sec)
mysql> create table u2(
-> id int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into u1 values(1),(2),(3);
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> insert into u2 values(4),(5),(6);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> (select * from u1);
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
mysql> (select * from u1) union (select * from u2);
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
+------+
6 rows in set (0.15 sec)
-
win_pup, во первых тестировать надо в первую очередь консольным клиентом, а не ГУИшными.
действительно, через консольный интерфейс всё замечательно выполняется...
и в PHP тоже работает, но не совсем...
но, я так понял, тут не PHP виноват а синтаксис не позволяет (проверял в консольном):
запрос
insert into tmp select * from table1 union all select * from table2
работает замечательно, а вот тот же запрос но со скобками
insert into tmp (select * from table1) union all (select * from table2)
уже не работает... :-(
я прав?...
-
insert into tmp select * from u1 union all (select * from u2);
работает отлично, а то что не работает у тебя
insert into tmp (select * from table1) ...
так это у тебя синтаксис INSERT ... SELECT неправильный и к UNION не имеет ни малейшего отношения :-)
-
> fidget
верно!...
без скобок в первом select`е всё замечательно работает!... :)
Вроде бы немного разобрался, спасибо!... ;)
и вот мне ещё интересно, к этому union`у никак нельзя применить группировку (group by ... )?