[SQL] Select vraagje....

Pagina: 1
Acties:

  • Undertaker2
  • Registratie: Januari 2000
  • Laatst online: 18-05 02:21
Afbeeldingslocatie: http://home.planet.nl/~snuve011/tabel.gif

De vraag is vervolgens:

Geef per wedstrijd met t_code like H% en tegenstand = 'SV Voorburg', de datum, teamnaam, roepnaam aanvoerder en roepnaam trainer.

Hiervoor heb ik al de volgende querie bedacht:

select datum, teamnaam, aanvoerder, trainer
from wedstryd, team
where wedstryd.t_code = team.t_code
and wedstryd.t_code like 'H%' and tegenstand = 'SV Voorburg'
order by datum;

Het probleem is nu alleen dat ik de codes van de aanvoerder en trainer krijg en ik moet juist de roepnamen hebben van de personen waar deze codes naar verwijzen...

AMD PoloMarco 23500 gigakilometer - 96" Quadcrystal scherm - Detonator 28010.25 afgerond op 2 decimalen - PlakBand @ 768 TB - 512 GB ZIGB - UltraFlex 100 GPU @ 5.5 ghz / 10 ghz - Isootjes @ 1 GB/sec


Verwijderd

Op maandag 01 oktober 2001 01:16 schreef Undertaker2 het volgende:
[afbeelding]

select datum, teamnaam, aanvoerder, trainer, roepnaam
from wedstryd, team
where wedstryd.t_code = team.t_code
and wedstryd.t_code like 'H%' and tegenstand = 'SV Voorburg'
order by datum;
?

  • Undertaker2
  • Registratie: Januari 2000
  • Laatst online: 18-05 02:21
Als ik simpelweg roepnaam toevoeg, hoe kan ik dan zien welke roepnaam van een trainer en welke van een aanvoerder is? (die info staat nml nog in tabel team)

AMD PoloMarco 23500 gigakilometer - 96" Quadcrystal scherm - Detonator 28010.25 afgerond op 2 decimalen - PlakBand @ 768 TB - 512 GB ZIGB - UltraFlex 100 GPU @ 5.5 ghz / 10 ghz - Isootjes @ 1 GB/sec


Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
select   w1.datum
,    t1.teamnaam
,    L1.roepnaam
,    L2.roepnaam
from     wedstryd w1
,    team     t1
,    lid    L1
,    lid    L2
where    w1.t_code     = t1.t_code
and  w1.t_code like 'H%' 
and  w1.tegenstand = 'SV Voorburg'
and  t1.trainer    = L1.l_code
and  t1.aanvoerder = L2.l_code
order by w1.datum;

Zat te denken aan zoiets. Dus met de codes van je aanvoerder en trainer zoeken in je lid tabel. (kan misschien ook 1 keer gebruik maken van je lid tabel. dus
or t1.aanvoerder = L1.l_code. Alleen weet je dan volgens mij niet welke naam bij wie hoort.)

Verwijderd

Je kan voor zowel een trainer als een aanvoerder een join maken naar de lid tabel om de roepnaam op te halen

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 10:57

Pelle

🚴‍♂️

Op maandag 01 oktober 2001 01:16 schreef Undertaker2 het volgende:
Geef per wedstrijd met t_code like H% en tegenstand = 'SV Voorburg', de datum, teamnaam, roepnaam aanvoerder en roepnaam trainer.
* Pelle denkt dat Undertaker2 informatica doet op de HHS en vandaag z'n materiaal voor DB-01 in moest leveren >:) ;)

'k heb het vannacht ook in elkaar zitten klussen

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20-09 23:34

Creepy

Tactical Espionage Splatterer

Tjonge jonge.. de opdrachten van DB-01 blijven ook hetzelfde zeg.... ik ga es zoeken of ik ze nog heb liggen.. kopen? :) :) :) >:)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 15-09 11:30
inderdaad .. die opdrachten heb ik ook nog in powerbuilder zitten maken ..

ik zou zelf eens even logisch nadenken, want zo lastig zijn die opdrachten nooit geweest vond ik ..

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Goed, er is een reden waarom je huiswerk krijgt en dat dan zelf moet maken. Lijkt me dat je er toch zo veel mogelijk moet proberen zelf uit te komen. Evt met behulp van docenten/practicum assistenten etc.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
zie ook: [topic=280913]

  • Undertaker2
  • Registratie: Januari 2000
  • Laatst online: 18-05 02:21
Ok, ik ben er nu bijna uit :)

Oplossing: (maar nu worden de NULL waarden weggelaten.)
select datum, teamnaam, trainer.roepnaam, aanvoerder.roepnaam //select roepnaam uit tabel trainer en select roepnaam uit tabel aanvoerder
from wedstryd, team, lid as trainer, lid as aanvoerder //maak "kopie" van lid als trainer & "kopie" van lid als aanvoerder.
where wedstryd.t_code = team.t_code //koppel tabel wedstryd aan team dmv de t_code's
and wedstryd.t_code like 'H%' //waarbij t_code van wedstryd begint met een H
and wedstryd.tegenstand = 'SV Voorburg' //en de tegenstand SV Voorburg is
and team.trainer = trainer.l_code //en waarbij de trainer van het team gelijk is aan de l_code in roepnaam uit trainer (dat een kopie is van lid)
and team.aanvoerder = aanvoerder.l_code //en waarbij de aanvoerder van het team gelijk is aan de l_code uit aanvoerder (dat een kopie is van lid)
order by wedstryd.datum;


Dit is dus de oplossing die hierboven werd gegeven met behulp van aliassen en een soort van dubbele select uit 1 tabel, maar dan in mijn eigen woorden.

Het antwoord is in dusverre goed dat nu idd geen nummers, maar namen worden getoond. Het "foute" is dat er ook teams zijn die geen trainer hebben (null waarde) en daarom wordt meteen de hele rij weggehaald en da's dus niet de bedoeling. De truc is volgens mij door een left join uit te voeren, maar welke tabel moet ik joinen met welke?

AMD PoloMarco 23500 gigakilometer - 96" Quadcrystal scherm - Detonator 28010.25 afgerond op 2 decimalen - PlakBand @ 768 TB - 512 GB ZIGB - UltraFlex 100 GPU @ 5.5 ghz / 10 ghz - Isootjes @ 1 GB/sec

Pagina: 1