[MySQL] Waarom is de "where clause ambiguous"?

Pagina: 1
Acties:
  • 50 views sinds 30-01-2008

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb de volgende tabellen en query. Met de query wil ik alle weblog posts ophalen die in het jaar 2005 zijn gemaakt (weblog_posts.created kolom is een datetime). Ook wil ik zien door welke gebruiker elke post gemaakt is en tot in welke categorie elke post is ingedeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+----------------------------------------------+
| weblog_posts                                 |
+----+-------+------+---------+----------+-----+
| id | title | body | created | category | uid |
+----+-------+------+---------+----------+-----+

+-------------------+
| weblog_categories |
+----+--------------+
| id | name         |
+----+--------------+

+-------------+
| users       |
+-----+-------+
| uid | name  |
+-----+-------+

SQL:
1
2
3
4
5
6
7
SELECT weblog_posts.*, users.name, weblog_categories.name AS category 
FROM weblog_posts, users, weblog_categories 
WHERE weblog_posts.uid = users.uid 
AND weblog_posts.category = weblog_categories.id 
AND YEAR(created) = 2005 
ORDER BY weblog_posts.created 
LIMIT 0, 5

Ik krijg van MySQL echter een dikke error terug: user error: Column: 'created' in where clause is ambiguous. Ik snap niet wat er nu mis is. Ik dacht dat het wellicht aan de ORDER BY lag, maar als ik de laatste twee regels (ORDER BY en LIMIT) van de query afhaal, houd ik dezelfde error. Wie kan mij helpen en vooral: uitleggen waarom het fout gaat?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Spotmatic
  • Registratie: Februari 2003
  • Laatst online: 23:31

Spotmatic

Ken sent me

Ik mis de "weblog_posts." (tabelnaam) voor het "created" veld in je where clausule...

Trotse Volkswagen T1 en T3 bezitter


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
and year(weblog_posts.created) = 2005

Waarschijnlijk raakt hij in de war als je niet overal de tabelnamen gebruikt.

Who is John Galt?


Verwijderd

Reveller schreef op dinsdag 26 juli 2005 @ 16:52:
user error: Column: 'created' in where clause is ambiguous.
De kolom 'created' is ambigu, oftewel heeft meerdere betekenissen. Je zult denk ik "weblog_posts.created" moeten gebruiken.

edit:
Er zijn me net 2 te snel af maar dit zal het probleem dan wel zijn :P

[ Voor 19% gewijzigd door Verwijderd op 26-07-2005 17:02 ]


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
@Iedereen - jullie zijn allemaal
  • even snel
  • even scherp
Bedankt! Heel logisch natuurlijk, en typisch zoiets waar je lang op kunt staren als je het niet ineens ziet :)

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Hier had je prima zelf uit kunnen komen als je even in een woordenboek had opgezocht wat "ambiguous" betekent. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.