[ASP SQL] Resultaat 2 verschillende queries combineren

Pagina: 1
Acties:
  • 58 views sinds 30-01-2008

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Ik heb de volgende 2 queries:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
LedenProfiel.lidID, ProfielCategorie.profielID, ProfielCategorie.categorieID, 
Profiel.profielNaam, Categorie.categorieNaam, Categorie.categorieParent
FROM 
LedenProfiel 
INNER JOIN
ProfielCategorie ON LedenProfiel.profielID = ProfielCategorie.profielID 
INNER JOIN
Profiel ON LedenProfiel.profielID = Profiel.profielID 
INNER JOIN
Categorie ON ProfielCategorie.categorieID = Categorie.categorieID 
AND 
ProfielCategorie.categorieID = Categorie.categorieID
WHERE     
LedenProfiel.lidID = @lidiD


code:
1
2
3
4
5
6
SELECT
categorieNaam
FROM
Categorie
WHERE
categorieID = @categorieID


De @categorieID uit de 2e SQL query moet gevuld worden door de Categorie.categorieParent uit de 1e SQL query, en de resultaten moeten dus in op 1 scherm gekregen worden. Heeft iemand enig idee hoe ik dit voor elkaar kan krijgen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Tijdens het uitlezen van de 1e recordset sla een de waarde van categorieID op in een variabele en deze gebruik je bij het ophalen van je 2e recordset?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
gorgi_19 schreef op 30 mei 2003 @ 10:36:
Tijdens het uitlezen van de 1e recordset sla een de waarde van categorieID op in een variabele en deze gebruik je bij het ophalen van je 2e recordset?
Houdt dus wel in dat ik bij een groot aantal records in de 1e recordset ik een zware belasting op de database moet gaan uitvoeren... of valt dat te overzien (oftewel: is het de enige manier?)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Je wilt ze toch al op je scherm zetten? Je hebt het min of meer al 'in je hand'
Verder kan je Stored Procedures overwegen en meerdere recordsets ophalen in een SP.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 20-08 15:04

mOrPhie

❤️❤️❤️❤️🤍

Je kunt het beste temp-tables gebruiken. Het resultaat van de eerste query 'insert' je in een temp-table. De temp-table gebruik je gejoin'd in de 2e query. En daarna drop je de temp-table.

Maken en gebruik van een temp-table is erg makkelijk en is ook snel. Vaak denken mensen dat dit niet performant is, maar het werkt perfect :)

SQL:
1
2
3
4
5
CREATE TABLE #temp1
([colummetjes] [datatypes])

INSERT INTO #temp1
SELECT * FROM Blaa enz..


en als alles gedaan is, dan drop je de temp table. Succes :)

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Wat wil je eigenlijk precies bereiken?

Een LedenProfiel behoort tot 1 categorie?
Of tot meerdere?

En je wilt dan uiteindelijk de naam hebben van de categorie waar het ledenprofiel toe behoort.
Of alle categorieen waar dit ledenprofiel aan gekoppeld is?

Ik denk namelijk dat alles ook in 1 query mogelijk is.

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
robjanssen schreef op 30 mei 2003 @ 11:26:
Een LedenProfiel behoort tot 1 categorie?
Of tot meerdere?

En je wilt dan uiteindelijk de naam hebben van de categorie waar het ledenprofiel toe behoort.
Of alle categorieen waar dit ledenprofiel aan gekoppeld is?
Een LedenProfiel behoort tot meerdere categorieen. Immers, leden kunnen meerdere onderdelen uit meerdere categorieen selecteren. En je wilt alle categorieen die aan dat ledenprofiel gekoppeld zijn.

Normaal zou het inderdaad geen probleem zijn om alles in 1 query te doen. Maar zoals je hier kan zien, zitten de naam van hoofdcategorie en categorie in 1 tabel. Die met een categorieParent is null zijn de hoofdcategorieen, de rest zijn normale categorieen die via categorieParent gekoppeld (binnen de tabel zeg maar) zijn met de hoofdcategorie.

  • abeker
  • Registratie: Mei 2002
  • Laatst online: 07-08 15:52

abeker

...

mOrPhie schreef op 30 mei 2003 @ 11:12:
Maken en gebruik van een temp-table is erg makkelijk en is ook snel. Vaak denken mensen dat dit niet performant is, maar het werkt perfect :)
Nou, temp-tables werken misschien wel maar zijn niet snel te noemen (en gebruik indien mogelijk table variabelen). Vaak is een andere oplossing sneller...

Als een lid niet aan een root-categorie gekoppeld kan zijn, zou ik een extra join toevoegen op de categorietabel om zo ook meteen de naam van de parent categorie op te halen.

the less one forgets, the less one remembers


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
3
4
5
6
7
8
9
10
SELECT
categorieNaam
FROM
Categorie
WHERE
categorieID IN (SELECT CategorieParent
                         FROM Categorie
                         INNER JOIN ProfielCategorie ON Categorie.CategorieID = ProfielCategorie.CategorieID
                         INNER JOIN LedenProfiel ON ProfielCategorie.ProfielID = LedenProfiel.Profiel_ID
                         WHERE LedenProfiel.LidID = @lidID

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Daarmee krijg ik alleen de namen van de hoofdcategorie terug

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
categorieNaam
FROM
Categorie
WHERE
categorieID IN (SELECT CategorieParent
                         FROM Categorie
                         INNER JOIN ProfielCategorie ON Categorie.CategorieID = ProfielCategorie.CategorieID
                         INNER JOIN LedenProfiel ON ProfielCategorie.ProfielID = LedenProfiel.Profiel_ID
                         WHERE LedenProfiel.LidID = @lidID)
Or CategorieID IN (SELECT CategorieID
                         FROM Categorie
                         INNER JOIN ProfielCategorie ON Categorie.CategorieID = ProfielCategorie.CategorieID
                         INNER JOIN LedenProfiel ON ProfielCategorie.ProfielID = LedenProfiel.Profiel_ID
                         WHERE LedenProfiel.LidID = @lidID)

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Ambiguous column name categorieID

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
categorieNaam
FROM
Categorie
WHERE
categorieID IN (SELECT CategorieParent
                         FROM Categorie
                         INNER JOIN ProfielCategorie ON Categorie.CategorieID = ProfielCategorie.CategorieID
                         INNER JOIN LedenProfiel ON ProfielCategorie.ProfielID = LedenProfiel.Profiel_ID
                         WHERE LedenProfiel.LidID = @lidID)
Or CategorieID IN (SELECT CategorieID
                         FROM ProfielCategorie
                         INNER JOIN LedenProfiel ON ProfielCategorie.ProfielID = LedenProfiel.Profiel_ID
                         WHERE LedenProfiel.LidID = @lidID)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Kap nou eens even zeg. Gaan we zelf ook nog wat uitzoeken of gaan we doorgeefluik-van-foutmeldinkje spelen :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.