Toon posts:

[ASP - SQL] Query Resultaat in een nieuwe Query Stoppen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit hier met een probleem waar ik niet uit kom. Het probleem is als volgt:

Ik heb een Access Database waarin informatie staat. Nou haal ik iets uit die database en met die informatie bouw ik een andere query op. Tot hier is alles nog goed. Wanneer die nieuwe query wordt uitgevoerd krijg ik een aantal getallen terug. Hier begint het probleem. Deze getallen moeten ook een een Query komen zodat ik weer andere informatie uit een andere tabel kan halen aan de hand van de getallen die de andere Query opleverde. Klein voorbeeldje:

SELECT {kolomnaam} FROM {tabelnaam} WHERE {kolomnaam} = {variabele}

Deze Query geeft mij meerdere getallen en dan loop ik vast. Hoe kan ik deze getallen in een nieuwe Query zetten om meerdere tupels uit een andere tabel te halen ? Het probleem is dus dat ik meer als 1 getal krijg van de tweede Query en deze getallen moeten allemaal in een andere Query komen en dit moet dynamische gebeuren.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:45

gorgi_19

Kruimeltjes zijn weer op :9

Zoek je niet gewoon naar subqueries of joins?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Je kunt toch de waarde uit de RecordSet die uit deze select komt in een variabele zetten en die dan weer op dezelfde manier als je net aangaf in een nieuwe select statement zetten?

code:
1
2
3
4
5
sql="select veld from tabel where var = " + var
rs=conn.execute blabla
veldje = rs['veld']

sql="select * from tabel2 where var = '" + veldje + "';"


Of snap ik de vraag niet goed?

[ Voor 60% gewijzigd door Verwijderd op 07-06-2005 19:13 ]


Verwijderd

Topicstarter
Het probleem is dat er meerdere waardes uit de query komen. Als er 1 waarde uit komt is deze gewoon in een variabele te zetten zoals je zegt, maar met meerdere waardes weet ik het niet. Ik kan er niet uit komen in ieder geval. Of is het mogelijk om een hele kolom in een variabele te zetten ?

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Dit doorlopen van een array kun je doen door middel van een loop, je weet wel (while, for, repeat).

Zie w3schools waar je heel veel vind over dit soort dingen

http://Compusmurf.xs4all.nl


Verwijderd

Topicstarter
Ja, ik weet hoe ik deze informatie in een array zou kunnen zetten, maar dan moet dit nog in een dynamische Query worden gezet. Hoe kan ik de Query dan aanmaken aan de hand van de lengte van het Array ? Ik heb vrijwel alles van wat ik tot nu toe gedaan heb geleerd op W3Schools, maar dit staat er volgens mij niet tussen.

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Volgens mij bedoel je:

SELECT * FROM tabel WHERE kolomnaam IN (1,2,3,4,5,6,7);

Nou.. zo'n string met wat waarden tussen haakjes kan je wel opbouwen, dunkt mij.

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
Varienaja schreef op dinsdag 07 juni 2005 @ 20:38:
Volgens mij bedoel je:

SELECT * FROM tabel WHERE kolomnaam IN (1,2,3,4,5,6,7);

Nou.. zo'n string met wat waarden tussen haakjes kan je wel opbouwen, dunkt mij.
Bedoel je door middel van een lus een lange string opbouwen waar al die waardes in staan. en dat ik dan vervolgens die ene string gebruik om mijn Query mee te maken ? Daar had ik zelf nog niet aan gedacht, best wel slim eigenlijk.

  • napel25
  • Registratie: Januari 2002
  • Laatst online: 30-08-2025
Volgens mij moet je naar de tip van gorgi_19 kijken.

Je wilt nu dit doen:
SELECT value1 FROM table1

end dan:
SELECT value2 FROM table2 WHERE value3 IN (value1_1, value1_2,...)


Dit is sneller op te lossen met een subquery:
SELECT value2 FROM table2 WHERE value3 IN (SELECT value1 FROM table1)

Of met een join:
SELECT t2.value2
FROM table1 t1, table2 t2
WHERE t1.value1 = t2.value3

napel25


Verwijderd

Topicstarter
Ik heb het op de volgende manier opgelost:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
do until RS.EOF
for each x in RS.Fields
if x.name="T_ID" then
else
QueryString = QueryString + " OR "& cstr(x.value)
end if
next
RS.MoveNext
    
loop
RS.close
DBVerbinding.close

Query = "SELECT * FROM {tabelnaam} WHERE {kolomnaam} = 0 " & QueryString
RS.Open Query, DBVerbinding
%>


Wat vinden jullie hiervan ? Het werkt vlekkenloos. Bedankt voor de hulp.

  • napel25
  • Registratie: Januari 2002
  • Laatst online: 30-08-2025
Mooi dat het werkt!

Misschien kun je voor het aanroepen van de kolom ook RS!T_ID gebruiken. Dan hoef je niet door alle kolommen heen te loop-en.

napel25


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 11:45

gorgi_19

Kruimeltjes zijn weer op :9

ASP:
1
if not

bestaat ook in ASP :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik zal jullie tips onthouden voor de volgende keer. Ik ben al blij genoeg dat het werkt en wil er nu niks meer aan veranderen (heeft ook met tijd te maken).
Pagina: 1