Avatar billede ASOSOL Nybegynder
13. oktober 2009 - 16:13 Der er 6 kommentarer og
1 løsning

SQL forespørgsel... ganske simpel en.

Hej Alle,
Jeg har en tabel ved navn "Mail". Denne indeholder følgende kollonner;

TIL
CC1
CC2
CC3
CC4
CC5
TID
EMNE.


Data kan altså fremstå således;



TIL    |  CC1  |  CC2  | CC3 | CC4 |  CC5  |    TID  | EMNE

a@x.com  b@x.com                        ax@x.com    13:00  Hej
g@x.com  b@x.com  ax@x.com                        13:10  Ja
t@x.com                                              12:10  nej




Altså har jeg nogle rækker som indeholder mailadresser, som også kan fremtræde i nogle af CC kolonnerne.

Hvis jeg nu gerne vil have et resultatsæt som indeholder;
Alle mails (emne) hvor en e-mailadresse forefindes i enten TIL eller CC1 eller CC2 eller CC3 osv.

så skal der dannes en række for hver, hvor tid og emne også er i rækken. listen skal sorteres efter 'Til'.




fx vil jeg have mit resultatsæt til at se sådan ud (baseret på ovenstående tabel):


TIL    TID  | EMNE
a@x.com  13:00  Hej
a@x.com  13:10  Ja
b@x.com  13:00  Hej
b@x.com  13:10  Ja
g@x.com  13:10  Ja
t@x.com  12:10  nej


håber at i forstår det.
Avatar billede arne_v Ekspert
13. oktober 2009 - 23:52 #1
prøv:

(SELECT til,tid,emne FROM mail)
UNION
(SELECT cc1,tid,emne FROM mail)
UNION
(SELECT cc2,tid,emne FROM mail)
UNION
(SELECT cc3,tid,emne FROM mail)
UNION
(SELECT cc4,tid,emne FROM mail)
UNION
(SELECT cc5,tid,emne FROM mail)
14. oktober 2009 - 08:18 #2
Maaske udbrede arne_v's svar med en tabel mail2 med colonnerne til, tid, og emne og saa sige:
(INSERT INTO mail2 SELECT til, tid, emne FROM mail) UNION
(INSERT INTO mail2 SELECT cc1, tid, emne FROM mail) UNION o.s.v.

Saa kan du query mail2 og sortere hvordan du vil, frasortere nul vaerdier, o.s.v.
Avatar billede ASOSOL Nybegynder
14. oktober 2009 - 08:52 #3
HMM... har lavet den nye tabel 'mail2' og kørt denne query;

INSERT INTO dbo.Mails2(Til, Tid, Emne)
SELECT Til, Tid, Emne from dbo.Mails
union
SELECT CC1, Tid, Emne from dbo.Mails
union
SELECT CC2, Tid, Emne from dbo.Mails
union
SELECT CC3, Tid, Emne from dbo.Mails
union
SELECT CC4, Tid, Emne from dbo.Mails
union
SELECT CC5, Tid, Emne from dbo.Mails


MEN mit resultatsæt består af 8000 rækker. de første 7000 er TIL feltet blankt, men tid og emne er udfyldt!?? fra række 7001 -> 8000 er mailadresser udfyldt,, men de andre kollonner blanke?!..

Jeg ønsker at sende en mail til hver enkelt bruger, hvor hans email adresse har fremtrådt i enten til/cc1/cc2 osv.

Fortælle ham at han i denne periode har modtaget disse mails som er gået tabte.. og så vise ham mailsene hvor han kan se emnet og tiden.


Altså skal samme emne/tid jo optræde flere gange.. da samme mail kan være sendt til flere brugere.


*suk* =) ..
Avatar billede arne_v Ekspert
14. oktober 2009 - 14:50 #4
ups

(SELECT til,tid,emne FROM mail WHERE til IS NOT NULL)
UNION
(SELECT cc1,tid,emne FROM mail WHERE cc1 IS NOT NULL)
UNION
(SELECT cc2,tid,emne FROM mail WHERE cc2 IS NOT NULL)
UNION
(SELECT cc3,tid,emne FROM mail WHERE cc3 IS NOT NULL)
UNION
(SELECT cc4,tid,emne FROM mail WHERE cc4 IS NOT NULL)
UNION
(SELECT cc5,tid,emne FROM mail WHERE cc5 IS NOT NULL)
Avatar billede ASOSOL Nybegynder
14. oktober 2009 - 15:32 #5
Det hjalp heller ikke arne. samme mærkelige resultat som sidst.

MEN MEN =)=)... tror jeg har løst det nu, vha UNION ALL.
se her:


(SELECT til,tid,emne FROM Mails)
UNION ALL
(SELECT cc1,tid,emne FROM Mails)
UNION ALL
(SELECT cc2,tid,emne FROM Mails)
UNION ALL
(SELECT cc3,tid,emne FROM Mails)
UNION ALL
(SELECT cc4,tid,emne FROM Mails)
UNION ALL
(SELECT cc5,tid,emne FROM Mails)



det ser Meget mere rigtigt ud!!..
17. oktober 2009 - 12:23 #6
Ville det vaere et passende tidspunkt at lukke svaret paa?  Saa staar den ikke laengere som et aabent indlaeg paa min liste.
Avatar billede arne_v Ekspert
12. december 2009 - 02:59 #7
INSERT ... UNION INSERT ...

er så vidt jeg ved aldeles invalid SQL syntax ....
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Kontorchef med ansvar for tværgående service management

Udviklings- og Forenklingsstyrelsen

Scrum Master

MAN Energy Solutions

Cloud FinOps Practitioner

Udviklings- og Forenklingsstyrelsen

Erfaren udvikler/DevOps til Integrationsplatforme