SQL διαφορά

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
fotisaueb
Kilobyte level
Kilobyte level
Posts: 230
Joined: Fri Apr 30, 2004 8:25 pm

SQL διαφορά

Post by fotisaueb » Sat Jun 04, 2005 1:03 pm

Πως μπορεί να γραφεί η διαφορά δύο συνόλων σε MS-SQL πχ

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

A-B

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

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

thanx
User avatar
krou
byte level
byte level
Posts: 56
Joined: Mon Jun 14, 2004 12:12 am

Post by krou » Sat Jun 04, 2005 3:16 pm

νομιζω πως μπορεις να γραψεις:

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

θα πρέπει ομως οι δύο πίνακες να είναι συμβατοί : ίδιο πλήθος στηλών,στις αντιστοιχες στήλες να είναι αποθηκευμένα ίδιου τύπου δεδομένα κτλ
User avatar
TaRaNTuLa
Gbyte level
Gbyte level
Posts: 1598
Joined: Fri Apr 30, 2004 4:54 pm
Academic status: PhD
Gender:
Location: MMLab

Post by TaRaNTuLa » Sat Jun 04, 2005 4:25 pm

krou wrote:νομιζω πως μπορεις να γραψεις:

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

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

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

TL-01 Full Carbon, TL-01 Upgraded, FF-01 Upgraded, M03, CC-01, ΤΤ-01 TypeE, Volvo και Scania Trucks και η λίστα συνεχίζεται...
User avatar
fotisaueb
Kilobyte level
Kilobyte level
Posts: 230
Joined: Fri Apr 30, 2004 8:25 pm

Post by fotisaueb » Sat Jun 04, 2005 5:16 pm

Παιδιά αυτο δεν πρέπει να ισχύει σε MS SQL διότι συντακτικά είναι λάθος.
Άλλωστε δεν υπάρχει το EXCEPT,INTERSECT σαν keyword αλλά σαν function

EXCEPT().
User avatar
Skeftomilos
bit level
bit level
Posts: 43
Joined: Fri Mar 04, 2005 8:08 am
Location: Ν.Κόσμος

Post by Skeftomilos » Sat Jun 04, 2005 7:09 pm

Μία πρόχειρη λύση (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
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
User avatar
semis19
Gbyte level
Gbyte level
Posts: 1607
Joined: Sat May 01, 2004 12:10 am
Location: Άνω Γλυφάδα - Αθήνα
Contact:

Post by semis19 » Sat Jun 04, 2005 7:19 pm

Σε DBMS Oracle είναι έτσι πάντως η σύνταξη:

Code: Select all

SELECT ename, empno, job
FROM emp
INTERSECT
SELECT name, empid, title
FROM emp_history;
Σε μένα είχε παίξει ...
"Make way for the bad guy.", Al Pacino, Playing Tony Montana in Scarface
"Elementary, my dear Watson.",The adventures of Sherlock Holmes
"A boy's best friend is his mother.", Antony Perkins, Psycho
"P.M.P. Fight Hey, Juohmaru, you are a fighter of hope, P.M.P. Fight Put your love into machines ..." - Plawres SanShiro
Erevodifwntas
Gbyte level
Gbyte level
Posts: 1098
Joined: Thu Apr 22, 2004 2:18 pm
Academic status: Alumnus/a
Gender:
Location: In a Long Time Ago in A Galaxy far far away
Contact:

Post by Erevodifwntas » Sat Jun 04, 2005 7:54 pm

Sorry αλλά το απλό, παλιό και καλό
Select * from A where something='kati' and something<>'kati allo'

δεν παίζει??

(από το παράδειγμά του κατάλαβα ότι αναφέρεται στον ίδιο πίνακα, άρα οπωσδήποτε οι πίνακες είναι συμβατοί)
Go To Statement Considered Harmful (Τιτλος δημοσίευσης του Edsger Dijkstra).

my personal site
Post Reply

Return to “Προγραμματισμός”