[sql] column identificatie in select

Pagina: 1
Acties:

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
stel ik heb 2 tabellen, Persoon(sofinr,voornaam) en Fiets(fietsnr, sofinr, merk).

en stel dat ik het bv volgende select statement uitvoer:
code:
1
select sofinr from Persoon where true

Wat is er gebeurd is dat er een cartesisch product gemaakt wordt van bijde tabellen (en ik hou geen rekening met de relatie Fiets.sofinr = Persoon.sofinr) en een van die elementen zou dan kunnen zijn:

{(Persoon.sofinr,13),(Persoon.voornaam,'Jan'),(Fiets.fietsnr=3),(Fiets.sofinr=95),(Fiets.merk='Batavus')}

Als je hier uit de sofinr wilt halen, welke zou dan gepakt worden? Persoon.sofinr(13) of Fiets.sofirnr?(95) Ik denk dat gekozen is voor de 1e tabel (Persoon) dus Persoon.sofinr. Zijn er hier algemeen geldende afspraken voor?

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

*fout gelezen*

Hij geeft een ambigious error in dat geval (dus bij geen specificatie)

Klaar voor een nieuwe uitdaging.


  • tomato
  • Registratie: November 1999
  • Niet online
Op dinsdag 16 oktober 2001 16:56 schreef chem het volgende:
*fout gelezen*

Hij geeft een ambigious error in dat geval (dus bij geen specificatie)
Een goede database zal inderdaad melding maken van een ambigious column. Gebruik column aliassen om aan te geven wat je bedoelt:
code:
1
2
3
SELECT
   PSN.sofinr AS PersoonSofinr,
   FTS.sofinr AS FietsSofinr

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op dinsdag 16 oktober 2001 16:56 schreef chem het volgende:
*fout gelezen*

Hij geeft een ambigious error in dat geval (dus bij geen specificatie)
Dus sql die pikt dit niet? Ben met semi sql onderdeel in expertsysteem bezig, en daar kom ik dit tegen. Had zelf in gedachten om(niet de oplossing die ik zelf zou kiezen) *kuch* de eerste table dan maar te kiezen *kuch*, dacht dat sql ook zoiets deed..

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024
Op dinsdag 16 oktober 2001 17:10 schreef tomato het volgende:

[..]

Een goede database zal inderdaad melding maken van een ambigious column. Gebruik column aliassen om aan te geven wat je bedoelt:
code:
1
2
3
SELECT
   PSN.sofinr AS PersoonSofinr,
   FTS.sofinr AS FietsSofinr
of misschien een
code:
1
Select Persoon.sofinr from Persoon,Fiets where true;

(voor deze oplossing ga ik nu)

  • tomato
  • Registratie: November 1999
  • Niet online
Op dinsdag 16 oktober 2001 17:10 schreef tomato het volgende:
code:
1
2
3
SELECT
   PSN.sofinr AS PersoonSofinr,
   FTS.sofinr AS FietsSofinr
Misschien niet helemaal volledig: PSN en FTS nam ik hier aan voor table aliassen ;)
Pagina: 1