[SQL] Data uit vier tabellen koppelen lukt niet

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

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik heb onder andere de volgende tabellen in mijn cms'je:
code:
1
2
3
4
5
users   stories
-----   -------
uid     sid    
name    title  
pass    uid

In de tabel 'stories' staan alle artikelen. Vandaag ben ik bezig met een overzichtspagina van alle gebruikers voor de admin. Hiervoor wil ik van elke user de NAW gegevens (uit de 'users' tabel) ophalen:
SQL:
1
SELECT u.* FROM users u WHERE uid != 0

Ik wil ook van elke user tellen hoeveel artikelen deze heeft geschreven:
SQL:
1
SELECT u.*, COUNT(s.sid) FROM users u, stories s WHERE u.uid = s.sid AND uid != 0

Maar nu krijg ik een foutmelding:
user error: Column: 'uid' in where clause is ambiguous
Op Google kom ik vele voorbeelden van dergelijke errors tegen, onder andere op een ander forum, waar een user zegt:
In the WHERE clause you are referring to catID column without specifying the table name or an alias (i.e. catID = 'var2') so MySql throws an error as it doesn't know whether you mean catID from tbl_listings or the one from tbl_category
Voor mij zou dat betekenen dat ik niet naar een tabel of alias refereer, maar voor zover ik begrijp doe ik dat wel. Wat doe ik verkeerd?

"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."


  • kunnen
  • Registratie: Februari 2004
  • Niet online
Ik denk dat je moet hebben:

SQL:
1
SELECT u.*, COUNT(s.sid) FROM users u, stories s WHERE u.uid = s.sid AND u.uid != 0


Zoals in de laatste bron die je noemt te lezen is: MySQL weet niet of je met uid u.uid of s.uid bedoelt.

[ Voor 34% gewijzigd door kunnen op 04-08-2006 23:27 ]


  • Ozzy
  • Registratie: April 2000
  • Laatst online: 11-02 21:32

Ozzy

omnia mutantur, nihil interit

misschien van
code:
1
uid != 0
dit
code:
1
u.uid != 0
maken?

O dag schoonheid, dag schoonheid, dag schoonheid, dag, dag!


Verwijderd

Moet trouwens
code:
1
u.uid = s.sid
niet
code:
1
u.uid = s.uid
zijn?

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 21:39

DexterDee

I doubt, therefore I might be

yup, de alias vergeten ervoor te zetten op het veldje uid, kan gebeuren ;)

Ik heb mezelf trouwens aangewend om Primary keys 'id' te noemen en Foreign keys te beginnen met de tabelnaam of entiteit van de relatie, bijv. person_id. Op deze manier minimaliseer ik de kans dat ik dubbele keynamen heb :)

Klik hier om mij een DM te sturen • 3245 WP op ZW


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Even "ambigu" opzoeken in het woordenboek doet wonderen. ;) Hier is prima uit te komen met Google en het woordenboek. :)

'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.