[MySQL] Unknown column in 'field list', maar hij bestaat wel

Pagina: 1
Acties:
  • 985 views sinds 30-01-2008
  • Reageer

  • Evilbee
  • Registratie: November 2002
  • Laatst online: 13:27
Ik ben bezig om een query te maken die uit meerdere tabellen gegevens haalt.
Eerst waren de joins alleen gemaakt door de WHERE clausule, maar nu moet er een LEFT JOIN bij.

En dan krijg ik de volgende fout: nativecode=1054 ** Unknown column 'VS.default' in 'field list'

Maar als ik vervolgens in de WHERE clausule de tabellen 'db_afd_attributes' en 'db_afd_entities' omdraai zodat db_afd_attributes als laatste genoemd is, dan krijg ik deze fout niet.

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   SELECT A.`viewAttributeID`,
          A.`viewEntityID`,
          A.`mandatory`,
          A.`hasSubset`,
          A.`displayType`,
          CONCAT(AE.`code`, '_', AA.`code`) AS `code`,
          AA.`format`,
          AA.`datatype`,
          AA.`name`,
          AA.`description`,
          AA.`label` AS `codeListName`,
          CL.`extern`

     FROM `db_views_attributes` A,
          `db_views` V,
          `db_afd_attributes` AA,
          `db_afd_entities` AE

LEFT JOIN `db_afd_codelist` CL
       ON CL.`label`=AA.`label`
      AND CL.`codeValue` IS NULL

    WHERE A.`viewID`=V.`viewID`
      AND AA.`attributeID`=A.`attributeID`
      AND AE.`entityID`=AA.`entityID`

      AND A.`viewAttributeID`='5'
      AND V.`viewID`='1'
      AND V.`companyID`='1'

    LIMIT 1


Als ik op deze fout ga googlen, dan krijg je heel veel resultaten van mensen waarbij er een spatie achter of voor de kolom staat. Dit is bij mij niet het geval, ik heb die kolom al 5 keer verwijderd en opnieuw aangemaakt door de kolomnaam zelf te typen, maar hij blijft de fout geven en ik denk niet dat dat het probleem is omdat ie het met de omgedraaide tabellen wel doet.

Het enige resultaat waarbij het probleem hetzelfde is, is deze: http://bugs.mysql.com/bug.php?id=1689 . Daar wordt gemeld dat het restarten van de server het probleem oplost, maar dat is bij mij dus niet het geval.

Nu doet de query het wel goed met de omgedraaide tabellen, maar ik heb net nog een LEFT JOIN toegevoegd en dan krijg ik dezelfde fout, alleen dan op een andere kolom.

Ik gebruik MySQL 5.0.27

LinkedIn - Collega worden?


  • xtra
  • Registratie: November 2001
  • Laatst online: 19-11 10:57
Beetje te snel :(

[ Voor 84% gewijzigd door xtra op 15-02-2007 17:33 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik zie die hele kolom default niet in de query terug? 8)7
Evilbee schreef op donderdag 15 februari 2007 @ 16:59:Maar als ik vervolgens in de WHERE clausule de tabellen 'db_afd_attributes' en 'db_afd_entities' ...
Je bedoelt de FROM clause. ;)
maar hij blijft de fout geven en ik denk niet dat dat het probleem is omdat ie het met de omgedraaide tabellen wel doet.

...
Nu doet de query het wel goed met de omgedraaide tabellen, maar ik heb net nog een LEFT JOIN toegevoegd en dan krijg ik dezelfde fout, alleen dan op een andere kolom.
Joinen met ',' is imo bad practice. Schrijf gewoon voluit wat voor join je wil. Daarnaast is de precedence van deze join operator in mysql 5 opeens veranderd, dus dat vraagt om problemen als je ooit nog iets met versies < 5 doet.
Denk gewoon goed na, schrijf de tabelnamen en joins op in logische volgorde met ON/USING clauses en alles komt vanzelf goed. :P

{signature}


  • Evilbee
  • Registratie: November 2002
  • Laatst online: 13:27
Voutloos schreef op donderdag 15 februari 2007 @ 23:07:
Ik zie die hele kolom default niet in de query terug? 8)7

[...]
Je bedoelt de FROM clause. ;)

[...]
Joinen met ',' is imo bad practice. Schrijf gewoon voluit wat voor join je wil. Daarnaast is de precedence van deze join operator in mysql 5 opeens veranderd, dus dat vraagt om problemen als je ooit nog iets met versies < 5 doet.
Denk gewoon goed na, schrijf de tabelnamen en joins op in logische volgorde met ON/USING clauses en alles komt vanzelf goed. :P
Die default was van een andere query, copy/paste fout :P

Ik heb de query omgebouwd naar alleen JOIN's en nu werkt ie wel goed.

Dank je

Voor de zoek machine de aangepaste query:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
   SELECT A.`viewAttributeID`,
          A.`viewEntityID`,
          A.`mandatory`,
          A.`hasSubset`,
          A.`displayType`,
          CONCAT(AE.`code`, '_', AA.`code`) AS `code`,
          AA.`format`,
          AA.`datatype`,
          AA.`name`,
          AA.`description`,
          AA.`label` AS `codeListName`,
          CL.`extern`

     FROM `db_views_attributes` A,

     JOIN `db_views` V
       ON A.`viewID`=V.`viewID`
      AND V.`viewID`='1'
      AND V.`companyID`='1'

     JOIN `db_afd_attributes` AA
       ON AA.`attributeID`=A.`attributeID`

     JOIN `db_afd_entities` AE
       ON AE.`entityID`=AA.`entityID`

LEFT JOIN `db_afd_codelist` CL
       ON CL.`label`=AA.`label`
      AND CL.`codeValue` IS NULL

    WHERE A.`viewAttributeID`='5'

    LIMIT 1

LinkedIn - Collega worden?