[SQL] Dubbele bijna dezelfde query

Pagina: 1
Acties:

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11 14:00
Ik heb een programma waarin ik transacties met daarin berichten en daarin bericht regels in een database plaats.
Elk record uit de tabel Transacties heeft dus 1 of meerdere records uit de tabel Berichten en deze heeft weer 1 of meerdere records in de tabel Inhoud.
Mijn query moet een lijst van transacties geven die voldoen aan bepaalde woorwaarden die ik netjes in de where van mijn query stop.
Tot hier gaat alles eigenlijk nog prima, echter is het geheel iets complexer geworden doordat transacties weer subtransacties kunnen bevatten en deze kunnen dat ook weer tot onbeperkt diep.
Nu wil ik een lijst van transacties gaan maken die niet een parent transacties in die lijst hebben.
De oplossing die ik daarvoor heb is dat ik via de voorwaarden de lijst van transacties krijg, en als extra in de where stop ik dan not in met tussen de ( ) dezelfde query maar dan zonder de not in.
Eigenlijk zonde dus want de database is niet zo slim om te zien dat het bijna dezelfde query is en voert op deze manier dus 2 keer hetzelfde uit.
Ook een nadeel is dat transacties niet uit de lijst gehaald worden als hun directe parent niet in de lijst zit maar een parent erboven wel.
Is dit makkelijker op te lossen?

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Hoe link je een subtransactie aan zijn parent? Kun je een relevant deel van je datamodel aangeven? Welke query heb je nu al? Welke dbms gebruik je?

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11 14:00
Tabel Transacties heeft een ID en ParentID
Tabel Berichten heeft een ID en een TransactieID
Tabel Inhoud heeft een ID

Transacties.ID is gelinkt aan Berichten.TransactieID
Berichten.ID is gelinkt aan Inhoud.ID
en voor de subtransacties is Transacties.ParentID gelinkt aan Transacties.ID

Transacties.ID en Berichten.ID zijn unieke ID's
Een transactie heeft 1 of meerdere berichten.
Een bericht heeft 1 of meerdere inhoud regels.
Een transactie heeft 1 of meerdere subtransacties.

Voor de duidelijkheid had ID in de tabel Inhoud beter BerichtID kunnen heten.

dbms is neem ik aan database management systeem? het geheel draait op het moment onder access vanuit VB of via een odbc connectstring.
De bedoeling is dat het zonder veel moeite dus onder oracle mysql sql-server enz. moet kunnen werken.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22


  • maikel
  • Registratie: Januari 2001
  • Laatst online: 12:41
Kun je niet gewoon alle transacties waarvan het parent-id is ingevuld eruit filteren (where parentId is null)?
Of denk ik nu verkeerd?

  • PiepPiep
  • Registratie: Maart 2002
  • Laatst online: 17-11 14:00
Als een child transactie voldoet aan de voorwaarden om opgenomen te worden in de lijst maar zijn parent niet dan wil ik die child dus wel in de lijst. Dus helaas werkt dat niet nee.

486DX2-50 16MB ECC RAM 4x 500MB Drive array 1.44MB FDD MS-Dos 6.22