Toon posts:

[Access] Hulp met wat queries

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede tweakers,

We zijn bezig met een opdrachtje voor school. De bedoeling is dat we een "kleine" relationele database maken.
Wij hebben dus een soort forum gemaakt.

Alleen hebben we nu 2 vragen :

Is het mogelijk om in een delete query in 1x alleen onderliggende records (die met opzoek velden aan elkaar zitten) te verwijderen?
De help van Access zegt er niet zo heel veel over. Ik dacht zelf iets met CASCADE, dat lag zat nog ergens in mijn geheugen, dat verwijderd ook maar 1 record.
Of moet ik het in mijn programmatje oplossen, met eerste alle id's van de onderliggende records op te halen?

Access maakt allemaal mooie queries met JOINS erin,
het werk alleemaal goed.
Alleen ik heb altijd mijn queries zonder JOINS gemaaakt maar iedere keer in de WHERE clause de tweede id's aan elkaar vergeleken.
Access heeft deze querie voor mij gemaakt :
SELECT [berichten].[bid], [topics].[tid], [berichten].[bericht], [gebruikers].[naam], [berichten].[plaatsdatum], [berichten].[laatstgewijzigd]
FROM topics INNER JOIN (gebruikers INNER JOIN berichten ON [gebruikers].[uid]=[berichten].[uid]) ON [topics].[tid]=[berichten].[tid]
WHERE [topics].[tid]=[topicid]
ORDER BY [berichten].[plaatsdatum] DESC;
als ik deze querie zou maken zou die er zo uit zien :
SELECT [berichten].[bid], [topics].[tid], [berichten].[bericht], [gebruikers].[naam], [berichten].[plaatsdatum], [berichten].[laatstgewijzigd]
FROM topics,berichten,gebruikers
WHERE
gebruikers.uid = berichten.uid and berichten.tid = topics.tid and topics.tid=[topicid]
ORDER BY [berichten].[plaatsdatum] DESC;
(er komt hetzelfde uit de queries)
Wat is verstandiger? De 1e of de 2e en waarom?

Is het mogelijk in een querie, waarin je een subquery gebruikt.
De query te sorteren op dat veld uit de subquery ?

Alvast bedankt.

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 03:59
mbt tot cascade: je kunt bij je relaties (database-venster, in je knoppenbalk) per link aangeven dat je gelinkte records (dus aan de veel-kant van je relatie) verwijderd moeten worden

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-08 15:58
Voor vraag 1: zie nescafe. Als je kijkt naar de relatie-eigenschappen van een relatie tussen 2 tabellen kan je cascading instellen.

Vraag 2: ikzelf maak ook altijd gebruik van joins zonder het keyword 'join'. :D Wat er nu echt beter is weet ik niet en ik denk ook niet dat het qua snelheid echt een verschil uitmaakt. Ik merk wel dat sommige mensen het gebruik van dat join-keyword niet altijd goed toepassen (soms maken ze een left join wanneer dat eigenlijk niet nodig is, wat dan wel op de performance drukt imo). Ik vind wel dat het 'joinen' in de where clausule veel leesbaarder is.

Vraag 3: ja dat is mogelijk. Je kunt een alias aan dat veld geven dat je bekomt dmv een subquery, maar je kan ook in je order by clausule opgeven op het hoeveelste veld je wilt sorteren bv:
code:
1
2
3
select a, b, c
from tabel
order by 1

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ja....

het gewoon sorteren op een kolom kan ik wel.
Maar nu wil ik sorteren op een kolom die wordt gevuld door een subquery

kan dit ?

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 03:59
lezen?

test:
select (select min(b_weken.week) from b_weken where b_weken.week = bw.week), bw.overzicht_bhdr from b_weken bw order by 1

werkt gewoon hoor, hij sorteert op de 1e kolom, die gevuld wordt door de subquery

alleen DIT werkt niet bij mij:
select (select min(b_weken.week) as weeknr from b_weken where b_weken.week = bw.week), bw.overzicht_bhdr from b_weken bw order by weeknr
(dmv een alias dus)

oja en om jullie voor te zijn: je moet nooit op weeknr sorteren.. :)

edit:

oh ehm... tja.. euuhm... as weeknr dus verkeerd gezet :).. ook de tweede werkt dus wel :)

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans