16. december 2004 - 11:58Der er
17 kommentarer og 2 løsninger
SQL på baggrund af array
Arrayet indholder navnene på de tabeller der skal vælges fra og der skal vælges fra alle tabeller på én gang, ligesom "SELECT * FROM Tabel1, Tabel2, Tabel3 WHERE ..."
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
1) list = "tabel1,tabel2,tabel3,osv.." listen med tabellerne indsættes i variablen "list"
2) a = split(list, ",") listen splittes op ved ",", og indsættes i arrayen "a"
3) t = "" indholdet af variablen t sættes til "" (ingenting)
4) for i = 0 to ubound(a) start en for-next loop, hvor det er variablen i, der indeholder værdien (tallet der indholder arraynummeret) af arrayen. Den starter ved 0 og fortsætter til max (største array værdi -1, da den starter ved 0 og ikke 1)
5) t = t & a(i) & "," t's værdi sættes det det tidligere, + indholdet af arrayen (med i's værdi), og tilsidst tilføjes et ","
6) next fortsæt løkken
7) t = left(t, len(t) -1) pga loopen, står der nu et komma sidst i værdien af t. Det vil give et problem, og skal derfor fjernes. t's værdi sættes til: starten (fra venstre = Left) og til længden af t's værdi (hele strengen), minus det sidste tegn. t's værdi er nu OK.
8 "select * from " & t & " where ..." t's OK værdi indsættes i sql strengen.
"Her er en forklaring, hvis du ikke forstår det:" :) (men ellers tak!)
Problemet i din løsning er at jeg så står med 8-10 SQL strenge som afvikles UAFHÆNGIGT af hinanden og jeg derfor får 8-10 result set's. Den kunne jeg selv have skrevet...jeg vil select'e f.eks. feltet Kundenavn fra samtlige tabeller i ét resultset, som jeg så kan løbe igennem
Det er altsammen meget fint, men det er ikke dér problemet er, det er i at lave en SQL streng som kan vælge f.eks. kundenavn fra samtlige tabeller (som er defineret i array'et)
Arrayet indholder navnene på de tabeller der skal vælges fra og der skal vælges fra alle tabeller på én gang, ligesom "SELECT * FROM Tabel1, Tabel2, Tabel3 WHERE ..."
Hvis der nu er tale om 2 tabeller ordrer - København ordrer - Odense De 2 tabeller er identiske, i strukturen, men indeholder ordre for de respektive byer (don't ask, jeg har IKKE lavet database strukturen! :( ) Så vil jeg vælge alle de kunder som hedder "kundenavn" og overføre dem til Excel.
Men jeg kan selvfølelig bruge rbj's forslag og køre arrayet igennem, hvor SQL strengen bliver større og større: SQL = "SELECT * FROM " While index < size SQL = SQL + mit_array(index) Wend
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.