Gruppe (gruppeid,gruppenavn,gruppebeskrivelse,gruppesynlig,sprogid)
Nyheden kan tilhøre flere gruppe og flere kategorier.
Jeg skal nu have udtrukket følgende:
- Alle nyheder fra en bestemt gruppe - Nyheden,gruppen og kategorien er sat til synlig - Kategorierne skal være forskellig fra en bestemt kategori. - nyheden skal sorteres efter den sidste dato først -for at begrænse mængden af data skal der kun hentes nyhedid,seasonid,nyhedsynlig,nyheddatotid,nyhedoverskrift samt nyhedresume fra nyheder.
Nedenstående SQL sætning henter fint de rigtige nyheder ud (ikke den bedste sql sætning – ved det), men hvis en nyhed tilhøre flere kategorier, bliver den udskrevet 2 fange – HVORDAN UNDGÅR JEG DET? – nyhederne skal på en eller anden måde grouperes efter nyhedid?
SELECT TOP 3 nyhed.nyhedid,nyhed.seasonid,nyhed.nyhedsynlig,nyhed.nyheddatotid,nyhed.nyhedoverskrift,nyhed.nyhedresume,nyhed_gruppe.*,gruppe.*,nyhed_kategori.*,kategori.* FROM nyhed,nyhed_gruppe,gruppe,nyhed_kategori,kategori WHERE nyhed.nyhedid = nyhed_gruppe.nyhedid AND nyhed_gruppe.gruppeid = gruppe.gruppeid AND nyhed.nyhedid = nyhed_kategori.nyhedid AND nyhed_kategori.katid = kategori.katid AND nyhed.nyhedsynlig=1 AND gruppe.gruppesynlig=1 AND kategori.katsynlig=1 AND gruppe.gruppeid=1 AND kategori.katid<>64 AND kategori.katid<>71 ORDER BY nyheddatotid DESC ;
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.
Den er komplet "SELECT TOP 3 nyhed.nyhedid,nyhed.seasonid,nyhed.nyhedsynlig,nyhed.nyheddatotid,nyhed.nyhedoverskrift,nyhed.nyhedresume,nyhed_gruppe.*,gruppe.*,nyhed_kategori.*,kategori.* FROM nyhed,nyhed_gruppe,gruppe,nyhed_kategori,kategori WHERE nyhed.nyhedid = nyhed_gruppe.nyhedid AND nyhed_gruppe.gruppeid = gruppe.gruppeid AND nyhed.nyhedid = nyhed_kategori.nyhedid AND nyhed_kategori.katid = kategori.katid AND nyhed.nyhedsynlig=1 AND gruppe.gruppesynlig=1 AND kategori.katsynlig=1 AND gruppe.gruppeid=1 AND kategori.katid<>64 AND kategori.katid<>71 ORDER BY nyheddatotid DESC ;"
SELECT TOP 3 nyhed.nyhedid, nyhed.seasonid, nyhed.nyhedsynlig, nyhed.nyheddatotid, nyhed.nyhedoverskrift, nyhed.nyhedresume, nyhed_gruppe.*, gruppe.*, nyhed_kategori.*,kategori.* FROM nyhed,nyhed_gruppe,gruppe,nyhed_kategori,kategori WHERE nyhed.nyhedid = nyhed_gruppe.nyhedid AND nyhed_gruppe.gruppeid = gruppe.gruppeid AND nyhed.nyhedid = nyhed_kategori.nyhedid AND nyhed_kategori.katid = kategori.katid AND nyhed.nyhedsynlig=1 AND gruppe.gruppesynlig=1 AND kategori.katsynlig=1 AND gruppe.gruppeid=1 AND kategori.katid<>64 AND kategori.katid<>71 ORDER BY nyheddatotid DESC ;
Ok, der tror jeg du har fejlen. Du vælger nyhed_kategori.* og kategori.* Så skal den vel også give 2 stk nyhed_id da nyheden står 2 gange i nyhed_kategori.* lader du være med at vælge felterne men kun bruger dem i "where" sætningene, kan du smide et distinct ind. F.eks:
SELECT TOP 3 distinct nyhed.nyhedid, nyhed.seasonid, nyhed.nyhedsynlig, nyhed.nyheddatotid, nyhed.nyhedoverskrift, nyhed.nyhedresume, nyhed_gruppe.*, gruppe.* FROM nyhed,nyhed_gruppe,gruppe,nyhed_kategori,kategori WHERE nyhed.nyhedid = nyhed_gruppe.nyhedid AND nyhed_gruppe.gruppeid = gruppe.gruppeid AND nyhed.nyhedid = nyhed_kategori.nyhedid AND nyhed_kategori.katid = kategori.katid AND nyhed.nyhedsynlig=1 AND gruppe.gruppesynlig=1 AND kategori.katsynlig=1 AND gruppe.gruppeid=1 AND kategori.katid<>64 AND kategori.katid<>71 ORDER BY nyheddatotid DESC ;
Ok - fik lige entreprise mangaer til at grouppere for mig :-) - den kom ud med følgende:
SELECT TOP 3 nyhed.nyhedid, nyhed.seasonid, nyhed.nyhedsynlig, nyhed.nyheddatotid, nyhed.nyhedoverskrift, nyhed.nyhedresume FROM nyhed INNER JOIN nyhed_gruppe ON nyhed.nyhedid = nyhed_gruppe.nyhedid INNER JOIN gruppe ON nyhed_gruppe.gruppeid = gruppe.gruppeid INNER JOIN nyhed_kategori ON nyhed.nyhedid = nyhed_kategori.nyhedid INNER JOIN kategori ON nyhed_kategori.katid = kategori.katid WHERE (gruppe.gruppesynlig = 1) AND (kategori.katsynlig = 1) AND (gruppe.gruppeid = 1) AND (kategori.katid <> 64) AND (kategori.katid <> 71) GROUP BY nyhed.nyhedid, nyhed.seasonid, nyhed.nyhedsynlig, nyhed.nyheddatotid, nyhed.nyhedoverskrift, nyhed.nyhedresume HAVING (nyhed.nyhedsynlig = 1) ORDER BY nyhed.nyheddatotid DESC;
Men du får ponitne - du hjalp på vej - smid lige et svar tonnybrandt :-)
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.