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...
θα πρέπει ομως οι δύο πίνακες να είναι συμβατοί : ίδιο πλήθος στηλών,στις αντιστοιχες στήλες να είναι αποθηκευμένα ίδιου τύπου δεδομένα κτλ
Νάτος ο γάτος!!!
Και εγώ έτσι νομίζω πως μπορείς να το κάνεις...
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'
δεν παίζει??
(από το παράδειγμά του κατάλαβα ότι αναφέρεται στον ίδιο πίνακα, άρα οπωσδήποτε οι πίνακες είναι συμβατοί)