26. februar 2002 - 11:19Der er
25 kommentarer og 1 løsning
Sql sætning
Jeg har en tabel (Tabel1) og en forespørgsel(Tabel2) som jeg gerne vil lave en forespørgsel på. Men den er lidt tricky! Jeg har lavet en INNER JOIN på de to tabeller, men jeg skal faktisk bruge det modsatte af det jeg får.
SELECT [Tabel1].*, [Tabel2].* FROM [Tabel2] INNER JOIN [Tabel1] ON [Tabel2].[FeltA] =[Tabel1].[FeltB];
Jef får nogle poster, men jeg skal faktisk bruge dem som jeg ikke får vist. Hvordan laver jeg en sql sætning som viser det modsatte, dvs. alle de poster hvor feltA og FeltB ikke er ens.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
SELECT [Tabel1].*, [Tabel2].* FROM [Tabel1] LEFT JOIN [Tabel2] ON [Tabel2].[FeltA]=[Tabel1].[FeltB] WHERE [Tabel2].[FeltA] IS NULL UNION SELECT [Tabel1].*, [Tabel2].* FROM [Tabel2] LEFT JOIN [Tabel1] ON [Tabel2].[FeltA]=[Tabel1].[FeltB] WHERE [Tabel1].[FeltB] IS NULL;
Terry: Sorry, jeg har kigget forkert det var faktisk dig der skulle have pointene, men jeg var for hurtig, og kom til at give belling pointene, jeg kan godt forstå at du er sur, for hans svar var noget være lort. men jeg brugte <> som du havde foreslået, sorry, det var ikke meningen.
No problem celal :o) It isnt the points that I was concerned about I just could believe that != worked and a couple of answers did actually use it! Anyway, I think youi have an answer here too, proaccess tends to get it right :o)
Dette skal gøres i BEGGE SELECT-dele (Det de 2 SELECT dele gør, er at FØRST tager vi alle fra A, som ikke er med i B, og derefter alle fra B, som ikke er med i A)
You may have 100 in tabel1 but if there are a number of records in tabel2 with same foreign key for each record in table1 then you will get more than 100 records!
proaccess -> Det er ikke fordi jeg mener den ene SQL er bedre end den anden, har bare lidt svært ved at gennemskue dem (især din) - og du er jo SQL guruen herinde.
Det var også derfor jeg bad celal undersøge HVAD det var, han var ude efter... Og om han havde tænkt over hvordan de 2 tabeller vil "krydse" hinnanden...
Et forslag mere, der måske giver det resultat du ønsker:
SELECT Tabel1.felta as felt , " tabel1" AS tabel FROM Tabel2 RIGHT JOIN Tabel1 ON Tabel2.feltb = Tabel1.felta WHERE Tabel1.felta Not In (select tabel2.feltb from tabel2); UNION SELECT [Tabel2].[feltb] as felt, " tabel2" AS tabel FROM Tabel2 LEFT JOIN Tabel1 ON [Tabel2].[feltb]=[Tabel1].[felta] WHERE Tabel2.feltb Not In (select tabel1.felta from tabel1);
SELECT Tabel1.felta As Felt, "tabel1" AS Tabel FROM Tabel1 WHERE Tabel1.felta NOT IN (SELECT feltb FROM Tabel2) UNION SELECT Tabel2.feltb As Felt, "tabel2" AS Tabel FROM Tabel2 WHERE Tabel2.feltb NOT IN (SELECT felta FROM Tabel1);
...eller:
SELECT Tabel1.felta As Felt, "tabel1" As Tabel FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.felta=Tabel2.feltb WHERE Tabel2.feltB=Null UNION SELECT Tabel2.feltb As Felt, "tabel2" As Tabel FROM Tabel2 LEFT JOIN Tabel1 ON Tabel2.feltb=Tabel1.felta WHERE Tabel1.fleta=Null;
Fik du svar nok, og kan vi få lukket spørgsmålet...?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.