07. maj 2005 - 01:39Der er
9 kommentarer og 1 løsning
"Hvis ingen row's så en standard-row" i en forespørgel - hvordan?
Hej eksperter!
Jeg sidder og mangler lidt hjælp til en (måske) kompliceret SQL-query problem. Jeg har 2 tabeller - en over alle tutorer i mit system (inkl. E-mailadresser) - kaldet 2005_Tutorer og så en gruppe-tabel, hvor der er 2 felter, en med tutorid (som korresponderer med tutorid'erne i 2005_Tutorer) og så mailalias, som er et suffix man kan sætte efter en generel tutor konto. F.eks. tutor+web@xxxxx giver en mail til alle tutorerne i web-gruppen (altså til deres personlige E-mailadresse). Det med at håndtere mailene kører fint, problemet er når folk kommer til at skrive f.eks. tutor+dette+findes+ikke@xxxx, så brokker den sig,for den gruppe eksisterer ikke. Det jeg så gerne vil have er at den MySQL-query (som mailsystemet) bruger, kan se om gruppen eksisterer, og hvis den gør, så returnerer MySQL gladeligt E-mailadresserne på tutorerne i den pågældende gruppe og hvis ikke, så sendes mailen til en fast bestemt E-mailadresse. Jeg har brugt flg., men problemet med den query er at IF-funktionen i MySQL kun vil returnere een værdi, og altså ikke x antal rækker.:
select if( /*Vi undersøger hvor mange rækker en evt. query kunne returnere, hvis der er 0, så skal vi ha' fat i den generelle E-mailadresse*/ 0 in (select count(*) from 2005_Tutorer natural join 2005_TutorIn as TI where TI.mailalias ='gruppenavn'), /*Den generelle E-mailadresse */ 'den generelle E-mailadresse', /*vi har altså emailadresser i den pågældende gruppe */ (select email from 2005_Tutorer natural join 2005_TutorIn as TI where TI.mailalias ='gruppenavn'))
Hvis man tilføjer limit 0,1 til den sidste subquery, så virker det uden problemer, men hvis ikke så kommer MySQL med fejlen #1242 - Subquery returns more than 1 row
Jeg kan ikke gennemskue hvordan det ellers kunne gøres.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
øhh, jeg tror jeg fik beskrevet det forkert. Jeg skulle kun have "default page"/"den generelle E-mailadresse" ud, hvis der slet ingen rækker returneres fra "select email from 2005_Tutorer natural join 2005_TutorIn as TI where TI.mailalias ='gruppenavn'"-querien. Der returneres f.eks. ingen rækker hvis "gruppenavn" ikke eksisterer i tabellen.
Jaa, du siger selvfølgelig noget, men jeg er ikke lige den skarpeste kniv i skuffen til det pjat. Desuden virker systemet lige nu som det skal (altså når der er indtastet den rette E-mail-adresse), og derfor ville det jo være oplagt, hvis man bare ændrede i MySQL-querien.
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.