[ColdFusion] Meerdere datasources in 1 query

Pagina: 1
Acties:

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Weer s ff een vraagje. Ik had iets gemaakt in ColdFusion wat nu weer gewijzigd moet worden aangezien iemand het database-ontwerp nogal heeft omgegooid! :(

In principe moet ik nu gegevens uit 2 verschillende datasources in 1 query combineren. Gelukkig hebben we in CFM de QofQ (Query of query), zodat dit nog mogelijk is ook. Toch werkt ColdFusion niet mee.

Het orgineel was heel simpel, de query luidde:
code:
1
2
3
4
5
6
<cfquery name="showkeywords" datasource="itrecruitment" dbtype="ODBC">
SELECT SELECTKEY.*, RP.Bedrijfsnaam
FROM SELECTKEY, rp
WHERE SelectKey.BedrID=RP.BedrID
ORDER BY Bedrijfsnaam
</cfquery>

oftewel: Zoek de bedrijfsnaam bij het bedrid.

Nu is de tabel met de bedrijfsnamen in een andere database gezet.

Wat ik nu heb geprobeerd is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<cfquery name="selectbedrid" datasource="itrecruitment" dbtype="ODBC">
SELECT BedrID, keyword
FROM SELECTKEY
</cfquery>

<cfquery name="klantbedrnaam" datasource="intranet_3" dbtype="ODBC">
SELECT klantID, klantnaam
FROM klanten
</cfquery>

<cfquery name="showkeywords" dbtype="query">
SELECT selectbedrid.BedrID, klantbedrnaam.klantnaam, selectbedrid.keyword
FROM klantbedrnaam, selectbedrid
WHERE klantbedrnaam.klantID IN selectbedrid.BedrID
</cfquery>

In de 3e query voer je als het ware een query uit op de resultaten van de eerste twee.

Het probleem is nu dat de eerste 2 queries precies het gewenste resultaat opleveren, maar dat het combineren van beide queries in de 3e gigantische bagger oplevert. (hij geeft als uitvoer bijvoorbeeld 6 keer dezelfde bedrijfsnaam met hetzelfde keyword erachter)

Iemand een flauw idee hoe dat komt? Heeft het te maken met de QofQ? Want ik moet zeggen dat ik dit stukje code heb gemodelleerd aan de hand van een voorbeeld in het "Grote Macromedia ColdFusion Web Application Construction Kit"-boek, en ik ga er vanuit dat dit wel snor zit.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

Probeer IN is te vervangen door een directe aanpak..:)

Omdat een QofQ als zegmaar Array in het RAM geheugen wordt geplaatst kan de IN nog wel is roet in het eten gooien :)
code:
1
2
3
4
5
<cfquery name="showkeywords" dbtype="query">
SELECT selectbedrid.BedrID, klantbedrnaam.klantnaam, selectbedrid.keyword
FROM klantbedrnaam, selectbedrid
WHERE klantbedrnaam.klantID = selectbedrid.BedrID
</cfquery>

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Op vrijdag 01 maart 2002 14:44 schreef Gordijnstok het volgende:
Probeer IN is te vervangen door een directe aanpak..:)

Omdat een QofQ als zegmaar Array in het RAM geheugen wordt geplaatst kan de IN nog wel is roet in het eten gooien :)
code:
1
2
3
4
5
<cfquery name="showkeywords" dbtype="query">
SELECT selectbedrid.BedrID, klantbedrnaam.klantnaam, selectbedrid.keyword
FROM klantbedrnaam, selectbedrid
WHERE klantbedrnaam.klantID = selectbedrid.BedrID
</cfquery>
Had ik ook al geprobeerd, maar treurig genoeg levert dit exact hetzelfde resultaat op.
De eerste query levert een stuk of wat verschillende BedrID's met keywords op, maar de 3e lijkt alleen de eerste opgeleverde BedrID te pakken gebruikt deze steeds weer.
:(

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

En wat doet
code:
1
2
3
4
5
<cfquery name="showkeywords" dbtype="query">
SELECT a.BedrID, klantbedrnaam.klantnaam, a.keyword
FROM klantbedrnaam, selectbedrid AS a
WHERE klantbedrnaam.klantID IN (SELECT BedrID FROM selectbedrid)
</cfquery>

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Uhmm, een foutmelding geven die ik nog nooit eerder heb gezien! :)
Error Diagnostic Information
unknown exception condition

PCodeRuntimeContextImp::executeSQLTagCFQuery::endTag
edit:

Vind het sowieso raar dat het met 2 tabellen uit 1 database wel goedgaat, maar dat zodra je ze uit verschillende db's haalt het misgaat.

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


Verwijderd

Kijk hier eens naar.
Misschien is het nuttig om je progleem op te lossen.

http://www.macromedia.com/v1/Handlers/index.cfm?ID=21873&Method=Full

Vincent

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Topicstarter
Thanx! Denk dat die foutmelding kwam door de "AS" die gebruikt werd.
Heb m nu omgebouwd naar
code:
1
2
3
4
5
<cfquery name="showkeywords" dbtype="query">
SELECT selectbedrid.BedrID, klantbedrnaam.klantnaam, selectbedrid.keyword
FROM klantbedrnaam, selectbedrid 
WHERE klantbedrnaam.klantID IN (SELECT BedrID FROM selectbedrid) 
</cfquery>

Dit levert een NOG schaarsere foutmelding op:
Query Manipulation Error Code = 0

Can't find symbol: SELECT
Dit levert helemaal niks op op Google! :(

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -

Pagina: 1