abonnement Unibet Coolblue Bitvavo
pi_50659899
Ik heb deze tabellen:

documentatie
------------
id
fabrikant_id
leverancier_id
leverancier2_id (optioneel)
...

bedrijven
------------
bedrijf_id
naam
...

Aangezien leverancier 2 optioneel is gebruik ik een left outer join:

1
2
3
4
5
6
7
8
9
select doc.*,
b1.naam as fabrikant_naam,
b2.naam as leverancier_naam,
b3.naam as leverancier2_naam
from documentatie as doc, bedrijven as b1, bedrijven as b2
left outer join bedrijven as b3
on doc.leverancier2_id = b3.bedrijf_id
and doc.fabrikant_id=b1.bedrijf_id
and doc.leverancier_id=b2.bedrijf_id


Maar nu krijg ik als melding terug:
"#1054 - Unknown column 'doc.leverancier2_id' in 'on clause'"

Terwijl dit veld toch echt bestaat.
Ik kan ook geen fout ontdekken in de "on regel"?

Wat doe ik verkeerd?

Alvast vriendelijk bedankt.
pi_50660064
Ik ben niet echt een SQL programmer, meer VB, C.

on doc.leverancier2_id = b3.bedrijf_id

Moet dit niet zijn

on doc.leverancier2_id = b3.naam?

Misschien zeg ik iets volkomen achterlijks maar dat lijkt me logischer aangezien je die variabelen ook gebruikt daarboven.
Lambo of Rekt
pi_50660172
Nee dat is het niet.

Hij herkent om de een of andere reden OF de tabel "doc" niet OF het veld doc.leverancier2_id niet.
(Of ik heb de syntax gewoon verkeerd...)

"on documentatie.leverancier2_id = b3.naam" werkt ook niet.
pi_50660298
Nou schiet mij maar lek.
Heb het zo minimalistisch mogelijk geprobeerd:

1
2
3
4
5
select doc.*,
b3.naam as leverancier2_naam
from documentatie as doc
left outer join bedrijven b3
on doc.leverancier2_id = b3.bedrijf_id


En dit werk wel :?
Is het dan de "from" volgorde? Moet na "as doc" dan gelijk de left outer join statement staan?
pi_50660902
Laat maar, ik heb het al:

1
2
3
4
5
6
7
8
9
select doc.*,
b1.naam as fabrikant_naam,
b2.naam as leverancier_naam,
b3.naam as leverancier2_naam
from documentatie as doc, bedrijven as b1, bedrijven as b2
left outer join bedrijven as b3
on doc.leverancier2_id = b3.bedrijf_id
and doc.fabrikant_id=b1.bedrijf_id
and doc.leverancier_id=b2.bedrijf_id


De eerste 'and' op regel 8 moet zijn 'where'. Anders ziet hij dat gedeelte ook nog ofals het bij de join hoort :)
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')