Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Пересечение таблиц


Автор: DEER 15.7.2005, 10:34
Подскажите плиз, а то совсем запутался
В SQL UNION это объединение двух сущностей(выборок там или таблиц),
А какой оператор чтобы были только одинаковые записи(т.е. пересечение)?

Автор: LSD 15.7.2005, 10:55
Код
select * from table1
 intersect
select * from table2

Автор: DEER 15.7.2005, 11:05
что - то не пошло
Добавлено @ 11:06
этот оператор не под все СУБД идёт?

Автор: LSD 15.7.2005, 11:20
Цитата(DEER @ 15.7.2005, 12:05)
этот оператор не под все СУБД идёт?

Не все СУБД полностью поддерживаю все спецификации SQL, именно по этому:
Цитата
Обязательно указание:
1. Базы данных и версии (Paradox 7.0, MS SQL Server 2000 и т.п.)
2. Способа доступа (ADO, BDE и т.д.)
3. Среды программирования (VC++, Delphi и т.д.)

Автор: DEER 15.7.2005, 11:27
извините...
Задача была чтоб работало под => СУБД MS SQL SERVER 2000, MySQL 5.0 и ещё под ORACLE.
Пишу сейчас запросы под MySQL в программе MySQL-Front (это графическая облочка служит для удовного просмотра редактирования данных)
Среда программирования в данном вопросе значения по моему не иммет
Задача состоит в следующем.
Сделать из одной и той же таблицы данные с разными критериями отбора и оставить данные повторяющиеся в обоих выборках.
Код

SELECT employee.ID
FROM employee
WHERE employee.Role_ID = 3
ВОТ ТУТ НАДО ОПЕРАТОР ПЕРЕСЕЧЕНИЯ
SELECT employee.ID
FROM employee
WHERE employee.Role_ID = 4

Автор: LSD 15.7.2005, 11:34
Цитата(Oreilly)
INTERSECT Set Operator 
--------------------------------------------------------------------------------
The INTERSECT set operator retrieves the rows of two or more queries where the rows of the result sets are identical in both the first and second (and possibly more) queries. In some ways, INTERSECT is a lot like an INNER JOIN operation.

INTERSECT is in a class of keywords called set operators. Other set operators include EXCEPT and UNION. All set operators are used to simultaneously manipulate the result set of two or more queries; hence the term "set operators."

DB2 - Supported with limitations
MySQL - Not supported
Oracle - Supported with limitations
PostgreSQL - Supported with limitations
SQL Server - Not supported


А в твоем случае проще сделать так:
Код
SELECT employee.ID    
  FROM employee t1, employee t2
  where t1.Role_ID = 3 and t2.Role_ID = 4 and t1.ID = t2.ID

Автор: DEER 15.7.2005, 11:39
Ответ от сервера:
Цитата
Uniknown table 'employee' in field list

Я думаю он ругается на объявление t2
Добавлено @ 11:46
Код

SELECT t1.ID     
  FROM employee t1, employee t2    
  where t1.Role_ID = 3 and t2.Role_ID = 4 and t1.ID = t2.ID

так не ругается, но в ответ попадает объединение, а не пересечение

Автор: DEER 15.7.2005, 11:54
Всё разобрался спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)