04. marts 2009 - 20:27Der er
5 kommentarer og 1 løsning
Fjern række i Dataset, hvis kol. A findes i Kol. B
Jeg har lavet en SQL, der er ret kompleks - så kompleks at jeg lever med at den giver mig nogle uønskede rækker med i svaret. Disse skal nu fjernes fra datasettet efter nedenstående simpel regel:
De uønskede rækker kan identificeres således:
t_id p_id subject ---- ---- ----------------------- 35 34 1. indlæg i forum 36 35 SV:1. indlæg i forum 19 2 NYT emne 33 19 SV:NYT emne 3 2 Objektiver
Regel: Hvis t_id findes mindst en gang i p_id kolonnen, skal rækken t_id slettes.
Jeg har gang i noget vb.net kode, men er gået kold i arrays'ene:
For Each dr As DataRow In ds.Tables(0).Select() For Each dr2 as DataRow In ds.Tables(0).Select() if dr2("parent_id") = dr("topic_id") then dr.Delete() End If Next Next
Det fejler naturligvis, fordi den reelt checker på samme række; men er der nogen der kan vise mig hvordan sådan et array-check skal se ud for at virke?
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.
Sørme, det lykkedes - men det var kringlet.. MS SQL kan ikke lave en 'CREATE OR REPLACE VIEW', men kræver et check først. Så det blev til 3 kald:
1. Slet gl. view, hvis det findes "IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'My_view') DROP VIEW My_view"
2. Oprettelse af View drillede også, da jeg fik en syntax error. Det fandt jeg så frem til kunne omgås, ved brug af EXEC( .. "EXEC(' CREATE VIEW CLJ_FORUMLIST AS SELECT ... ')"
3. Endelig skulle jeg jo så trække data ud, som beskrevet af arne_v: "SELECT * FROM My_view WHERE t_id NOT IN (SELECT p_id FROM My_view)"
Så lykkedes det også!
Arne_v du fortjener ihvertfald nogle af pointene, så læg lige et svar.
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.