[VB6] geneste sql opdracht

Pagina: 1
Acties:

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb 2 tabellen (access) die ik vanuit VB6.0 aanspreek

"gesprekken" met de velden: datum, tijdstip, toestelnummer,... (veld groep staat hier niet in)
"toestellen" met de velden: toestelnummer, mailadres, groep

in "gesprekken" kan het toestelnummer meerdere keren voorkomen, in "toestellen" kan het toestelnummer slechts 1x voorkomen (groepen kan meerdere keren)

Ik wil al de gegevens van de tabel gesprekken laten zien van 1 bepaalde groep (bv. zoeken op 'groep1')

ik heb volgende sqlcode:

code:
1
2
select * from gesprekken where toestelnummer =
         select toestelnummer from toestellen where groep = 'groep1'


Het probleem met een geneste select is dat het 2de deel maar 1 waarde mag teruggeven. Maar aangezien meerdere toestellen in 1 bepaalde groep kunnen staan loopt dit fout. Heeft iemand een idee hoe ik dit kan oplossen? Het veld groep in de tabel toestellen mee opnemen vind ik niet zo'n goede oplossing.

[ Voor 6% gewijzigd door mmy841 op 21-04-2005 09:47 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
2
3
4
5
select gesprekken.*
from gesprekken
, toestellen
where toestellen.toestelnummer = gesprekken.toestelnummer
and toestellen.groep = 'groep1'

Who is John Galt?


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
zo krijg ik geen error meer, maar ook geen resultaat (er zijn nochtans wel toestellen met die bepaalde groep). Maar ik ben al beter op weg, dus kan nog wat zoeken.

Bedankt alvast

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
code:
1
2
select * from gesprekken where toestelnummer IN 
        (select toestelnummer from toestellen where groep = 'groep1')

Of:
code:
1
2
3
select * from gesprekken inner join toestellen 
     ON gesprekken.toestelnummer=toestellen.toestelnummer
     where toestellen.groep='groep1'

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
hier heb ik juist hetzelfde probleem...geen resultaat :(

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
De aangedragen queries lijken echter wel juist te zijn. Kun je anders de tabeldefinities eens geven? Dus niet alleen de veldnamen, maar ook de types en dergelijke.

Wat je in elk geval nog kunt proberen is of de binnenste query resultaten oplevert als je die los uitvoert. Vervolgens kun je nog kijken of de buitenste query zonder de binnenste uberhaupt resultaten oplevert.
En ook de inner join van bee-es zonder where kun je eens proberen.

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
tabel gesprekken:
datum - text 8 lang - allow zero length
tijdstip - text 15 lang - allow zero length
toestelnummer - text 8 lang - allow zero length
beltijd - double - allow zero length

tabel toestellen:
toestelnummer - text 8 lang - don't allow zero length
mailadres - text 45 lang - allow zero length
groep - text 30 lang - allow zero length

in de tabel gesprekken is het toestelnummer wel altijd ingevoerd.

Ik ga direct eens testen met de afzonderlijke resultaten van de selects

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Kun je de db niet ergens online zetten?

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
daarvoor moet ik wachten tot ik thuis ben (rond 17.30u pas...zit nl op m'n stageplaats)
code:
1
 select * from toestellen where toestellen.groep = 'groep1'
geeft al de juiste resultaten

Met de rest ben ik nog aan het testen.

Wat ik thuis ook wel kan proberen is mbv access een query te maken en vervolgens de sql-code op te vragen

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
update:
code:
1
2
select * from toestellen, gesprekken
where toestellen.toestelnummer = gesprekken.toestelnummer

geeft ook resultaten weer. De query van justmental in 2 delen geeft dus resultaten.

edit:
de query van bee-es (de innerjoin) zonder where levert ook het juiste resultaat...

[ Voor 19% gewijzigd door mmy841 op 21-04-2005 12:56 ]


  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
dan vrees ik dat het je where statement is die niet goed functioneert. Bestaat die groep1 wel (of is het groepl, dat kun je met font courier altijd lastig onderscheiden)? Het is nu in elk geval duidelijk waar je probleem zich bevindt, succes met oplossen ervan ;)

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
de groep bestaat wel ja. Ik gebruikte groep 1 om te testen, maar ik haal het gegeven eigenlijk uit een listbox (die gevuld is met waarden die enkel voorkomen in de tabel).

Maar ik zal er nog wel op zoeken. Nu eventjes het laten bezinken & verderwerken aan iets anders. Dan kan ik er later weer 'fris' tegenaan

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
mocht dit nog relevant zijn: ik heb een oplossing gevonden (via access een query laten genereren die het toestelnummer opvroeg) en dan de sql-code opgevraagd:

code:
1
2
3
SELECT gesprekken.*, toestellen.groep
FROM toestellen INNER JOIN gesprekken ON toestellen.toestelnummer = gesprekken.toestelnummer
WHERE (((toestellen.groep)='groep 3'))


Deze code werkt...Bedankt voor alle reacties
Pagina: 1