Автор Тема: Добавление скобок при объединении(union) 2-х таблиц  (Прочитано 4906 раз)

0 Пользователей и 1 Гость просматривают эту тему.

win_pup

  • Гость
Здравствуйте!...

Немного не понятно, почему так получается:
если я пишу запрос:

select * from table1 union all select * from table2

то всё работает нормально,
но стоит добавить скобки:

(select * from table1) union all (select * from table2)

и тогда результат пуст... :(

почему так происходит?...

Спасибо!...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
версия?
у меня все Ок работает вне зависимости от скобочек.
На Машине Тьюринга далеко не уедешь.

win_pup

  • Гость
да, извиняюсь, версию-то я забыл написать:
MySQL 4.0.9-gamma-nt

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
попробуй проапгрейдить и проверить, я на 4.0.11 проверяла - все работало нормально.
На Машине Тьюринга далеко не уедешь.

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
странно, апгрейдил до версии 4.0.11 - всё равно такая же проблема...
даже если написать простейший запрос:

select * from table

то работает, а если этот запрос в скобки поместить:

(select * from table)

то уже никак, результат пустой получается

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
Какуая ошибка выдается?
Таблица точно существеут? К базе правильно стукаешься?
С уважением Сергей

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
да... таблица есть!... конект есть!...
а вот ошибку-то как раз и не выдаёт... :-/
(типа так и должно быть)
просто пустой результат запроса возвращает и всё!...

так ведь не должно быть по идее?...

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
На каком языке пишите?
Было бы неплохо посмотреть как вы формируете sql на этом языке программирования. Скорее всего дело именно в этом.
Уж (select * from table) должен работать
С уважением Сергей

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
в принципе, пишу на PHP...
но дело в том, что именно ЭТОТ запрос я пишу напрямую к базе (для проверки правильности его выполнения) через программу администрирования mySQL_Front в закладке Query... поэтому, среда программирования тут не причём...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
win_pup, во первых тестировать надо в первую очередь консольным клиентом, а не ГУИшными.
Во-вторых, если уж у вас не работает, то приведите пример маленький, что бы другие тоже могли проверить.
На Машине Тьюринга далеко не уедешь.

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
просто беру любую из таблиц и выполняю:

select * from <таблица>

работает!...

Обставляю всё это дело скобками:

(select * from <таблица>)

не работает!... :-(

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Повторяю еще раз: приведи пример!
У меня для любой таблицы все работает замечательно.

mysql
create table u1(
    -> 
id int);
Query OK0 rows affected (0.16 sec)

mysqlcreate table u2(
    -> 
id int);
Query OK0 rows affected (0.01 sec)

mysqlinsert into u1 values(1),(2),(3);
Query OK3 rows affected (0.04 sec)
Records3  Duplicates0  Warnings0

mysql
insert into u2 values(4),(5),(6);
Query OK3 rows affected (0.00 sec)
Records3  Duplicates0  Warnings0

mysql
> (select from u1);
+------+
id   |
+------+
|    
|
|    
|
|    
|
+------+
3 rows in set (0.00 sec)
mysql> (select from u1union (select from u2);
+------+
id   |
+------+
|    
|
|    
|
|    
|
|    
|
|    
|
|    
|
+------+
6 rows in set (0.15 sec)
На Машине Тьюринга далеко не уедешь.

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Цитировать
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)

уже не работает... :-(

я прав?...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
insert into tmp select from u1 union all (select from u2);

работает отлично, а то что не работает у тебя


insert into tmp (select from table1) ...
так это у тебя синтаксис INSERT ... SELECT неправильный и к UNION не имеет ни малейшего отношения :-)
На Машине Тьюринга далеко не уедешь.

Оффлайн win_pup

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 18
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
> fidget
верно!...
без скобок в первом select`е всё замечательно работает!... :)

Вроде бы немного разобрался, спасибо!... ;)

и вот мне ещё интересно, к этому union`у никак нельзя применить группировку (group by ... )?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28