13. oktober 2009 - 16:13Der 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
(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)
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.
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.
(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)
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)
er så vidt jeg ved aldeles invalid SQL syntax ....
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.