2010-10-14 7 views
1

Je reçois l'erreur suivante ci-dessous de ma requête, et je me demandais comment puis-je résoudre ce problème?Erreur PHP & MySQL - Dupliquer le nom de la colonne 'user_id'

Duplicate column name 'user_id' 

Voici ma requête MySQL.

"SELECT COUNT(users_friends.user_id) FROM ((SELECT * 
FROM users_friends 
INNER JOIN users ON users_friends.user_id = users.user_id 
WHERE users_friends.user_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1') 
UNION 
(SELECT * 
FROM users_friends 
INNER JOIN users ON users_friends.friend_id = users.user_id 
WHERE users_friends.friend_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1')) as friends" 

Voici ma nouvelle requête.

SELECT COUNT(user_id) FROM ((SELECT users_friends.user_id 
FROM users_friends 
INNER JOIN users ON users_friends.user_id = users.user_id 
WHERE users_friends.user_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1') 
UNION 
(SELECT users_friends.user_id 
FROM users_friends 
INNER JOIN users ON users_friends.friend_id = users.user_id 
WHERE users_friends.friend_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1')) as friends 

Répondre

0

Vous utilisez SELECT * from, ce qui porte toutes les colonnes de 2 tables user_friends et les utilisateurs, les deux ont une colonne appelée user_id. Quand vous utilisez UNION, je crois comprendre qu'une table temporaire est créée, donc MySQL se plaint que vous avez 2 colonnes avec le même nom. Essayez de définir la explictly user_id que vous souhaitez utiliser, par exemple, SELECT users.user_id, user_friends.abc etc

Edit: Si je comprends bien, vous essayez d'obtenir ids utilisateur du friends.To me semble que votre requête précédente renverrait la $user_id dans tous les dossiers.

Essayez ceci:

SELECT COUNT(*) as CNT FROM 
(

(SELECT users.user_id as uid 
FROM users_friends 
JOIN users ON users_friends.user_id = users.user_id 
WHERE users_friends.friend_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1') 

UNION 

(SELECT users.user_id as uid 
FROM users_friends 
JOIN users ON users_friends.friend_id = users.user_id 
WHERE users_friends.user_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1') 

) as myfriends 
+0

vous sorte de me perdre avec .abc – HELP

+0

que je ne sais pas ce que les champs sont dans les deux tableaux que j'ai utilisé .abc comme exemple. Il suffit de mettre explicitement les champs dont vous avez besoin des deux tables dans les deux requêtes utilisées dans l'UNION et cela devrait être OK –

+0

Maintenant, j'obtiens cette erreur 'Colonne inconnue 'users_friends.user_id' dans 'field list'' – HELP

0

Il y a quelques problèmes ici. Vous avez évidemment (lire l'humour) seulement un nombre de lignes, donc pas besoin de SELECT *, vrai? Je suppose que vous voulez utiliser une UNION pour ajouter des lignes ensemble ... Ainsi:

SELECT COUNT(*) AS the_count 
FROM 
(SELECT user_id AS ID 
FROM users_friends 
INNER JOIN users ON users_friends.user_id = users.user_id 
WHERE users_friends.user_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1' 
UNION 
SELECT friend_id AS ID 
FROM users_friends 
INNER JOIN users ON users_friends.friend_id = users.user_id 
WHERE users_friends.friend_id = '" . $user_id . "' 
AND users_friends.friendship_status = '1' 
) AS uf1; 

Note: Je suppose que le reste de la requête (jointure interne, où, etc.) fonctionne.

Édité, en corrigeant le problème de syntaxe avec les noms de champs ambigus pour ya.

SELECT COUNT(*) AS the_count 
FROM 
(SELECT uf.user_id AS ID 
FROM users_friends uf 
INNER JOIN users u ON uf.user_id = u.user_id 
WHERE uf.user_id = '" . $user_id . "' 
AND uf.friendship_status = '1' 
UNION 
SELECT uf.friend_id AS ID 
FROM users_friends uf 
INNER JOIN users u ON uf.friend_id = u.user_id 
WHERE uf.friend_id = '" . $user_id . "' 
AND uf.friendship_status = '1' 
) AS uf1; 
+0

Je reçois cette erreur 'Colonne' id_utilisateur 'dans la liste des champs est ambigu' – HELP

+0

Vous allez me faire travailler pour celui-ci, hein? Donne un tourbillon. –

+0

J'obtiens un compte de 1 quand il devrait être 7 :( – HELP

Questions connexes