Page 1 of 1

SQL διαφορά

Posted: Sat Jun 04, 2005 1:03 pm
by fotisaueb
Πως μπορεί να γραφεί η διαφορά δύο συνόλων σε MS-SQL πχ

A: SELECT * FROM KATI
B: SELECT * FROM KATI

A-B

υπάρχει η εντολή Intersect αλλα δεν ξέρω πως συντάσεται σε SQL

οποιος μπορεί ας βοηθήσει

thanx

Posted: Sat Jun 04, 2005 3:16 pm
by krou
νομιζω πως μπορεις να γραψεις:

select a
from pinakasa
where ....
except
select b
from pinakasb
where...

θα πρέπει ομως οι δύο πίνακες να είναι συμβατοί : ίδιο πλήθος στηλών,στις αντιστοιχες στήλες να είναι αποθηκευμένα ίδιου τύπου δεδομένα κτλ

Posted: Sat Jun 04, 2005 4:25 pm
by TaRaNTuLa
krou wrote:νομιζω πως μπορεις να γραψεις:

select a
from pinakasa
where ....
except
select b
from pinakasb
where...

θα πρέπει ομως οι δύο πίνακες να είναι συμβατοί : ίδιο πλήθος στηλών,στις αντιστοιχες στήλες να είναι αποθηκευμένα ίδιου τύπου δεδομένα κτλ
Νάτος ο γάτος!!! :-D :lol: :razz:

Και εγώ έτσι νομίζω πως μπορείς να το κάνεις...

Posted: Sat Jun 04, 2005 5:16 pm
by fotisaueb
Παιδιά αυτο δεν πρέπει να ισχύει σε MS SQL διότι συντακτικά είναι λάθος.
Άλλωστε δεν υπάρχει το EXCEPT,INTERSECT σαν keyword αλλά σαν function

EXCEPT().

Posted: Sat Jun 04, 2005 7:09 pm
by Skeftomilos
Μία πρόχειρη λύση (Access):

Πίνακας T με πεδία Id, Name

Query1 = SELECT * FROM T WHERE Name LIKE "A*"
Query2 = SELECT * FROM T WHERE Name LIKE "B*"

Διαφορά = SELECT * FROM T WHERE Name LIKE "A*" AND Id IN (SELECT Id FROM T WHERE Name LIKE "B*")

Ένωση = OR αντί για AND

Posted: Sat Jun 04, 2005 7:19 pm
by semis19
Σε DBMS Oracle είναι έτσι πάντως η σύνταξη:

Code: Select all

SELECT ename, empno, job
FROM emp
INTERSECT
SELECT name, empid, title
FROM emp_history;
Σε μένα είχε παίξει ...

Posted: Sat Jun 04, 2005 7:54 pm
by Erevodifwntas
Sorry αλλά το απλό, παλιό και καλό
Select * from A where something='kati' and something<>'kati allo'

δεν παίζει??

(από το παράδειγμά του κατάλαβα ότι αναφέρεται στον ίδιο πίνακα, άρα οπωσδήποτε οι πίνακες είναι συμβατοί)