Champ: 'id_connexion' dans field list est ambigu

Résolu/Fermé
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 - 3 juil. 2013 à 14:55
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 - 3 juil. 2013 à 16:03
Bonjour,

J'ai un problème avec une requete sql que je n'arrive pas a régler, du coup j'ai besoin d'aide. J'ai deux tables une chat et l'autre connexion avec id_connexion en commun.

Grâce à cette requete je veux afficher les infos de "chat" qui dispose seulement de "id_connexion" (table connexion) car mes pages sont sécurisées.

Voici ma requete:
//récupère l'id_connexion de l'utilisateur connecté.
$nom_personne = $_SESSION['nom'];

//requete
$affichage = mysql_query ("SELECT id_chat, destinataire, pseudo, message, date, id_connexion FROM chat, connexion Where connexion.id_connexion = chat.id_connexion AND ( cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.') ") or die (mysql_error());

Mais j'ai une erreur. Il me dit que le champs id_connexion est ambigu.

Du coup j'ai refait ma requete avec des INNER JOINT (en sachant que j'ai toujours eu bcp de mal avec ces bêtes là :) )
$affichage=mysql_query("
select a.Nom_utilisateur as Nom_utilisateur,
a.id_connexion as id_connexion,
c1.destinataire as destinataire,
c1.pseudo as pseudo,
c1.message as message,
c1.date as date,
C2.id_chat as id_chat
from
chat c1 inner join (select max(c.id_chat) as id_chat
from chat c
group by c.id_connexion) as c2 on c1.id_chat = c2.id_chat
right outer join connexion a on a.id_connexion = c1.id_connexion where (cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.')") or die (mysql_error())

et la nouvelle erreur:
Operand should contain 1 column(s)

Si quelqu'un pouvait m'aider à corriger l'une ou l'autre des requetes je vous en serai vraiment reconnaissante car la pour le coup je rame sec :)

Merci

2 réponses

Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 3/07/2013 à 15:43
Bonjour,

alors pour la 1ère partie de la requête SQL je verrais ceci
SELECT 
 CH.id_chat, 
 CH.destinataire, 
 CH.pseudo, 
 CH.message, 
 CH.date, 
 CH.id_connexion 
FROM chat as CH
INNER JOIN connexion as CN
ON CH.id_connexion = CN.id_connexion

ca c'est pour lier les 2 tables et n'avoir que les lignes de "chat" qui se trouve dans "connexion" avec id_connexion en commun

pour la 2ème partie, je comprend un peu moins l'histoire du (SELECT id_connexion, Nom_utilisateur From connexion Where id_connexion = '.$nom_personne.') pourquoi ne pas mettre CH.id_connexion =

Ensuite id_connexion n'est pas en numérique ?

Cordialement
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
3 juil. 2013 à 15:53
la requete marche impec, faut juste que j'arrive a définir que je souhaite afficher les infos de la table chat qui correspondent à l'id_connexion qui est en train de se servir du service, donc qui c'est connecté.
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
3 juil. 2013 à 15:55
CH.id_connexion = id_de_le_personne_connectée
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
3 juil. 2013 à 16:03
C'est bon j'ai trouvé

Merci beaucoup pour ton aide, tu ma sortie une bonne épine du pied!!
ET voila la requete finie!
$affichage=mysql_query("SELECT
CH.id_chat,
CH.destinataire,
CH.pseudo,
CH.message,
CH.date,
CH.id_connexion
FROM chat as CH
INNER JOIN connexion as CN
ON CH.id_connexion = CN.id_connexion
WHERE (cast(date_format(date, '%d') as signed) = ".date("d")." or cast(date_format(date, '%d') as signed) = ".(date ("d")+1).") AND destinataire = $nom_personne") or die (mysql_error());

Pourquoi faire compliqué quand on peut faire plus simple :)
Merci
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
3 juil. 2013 à 15:46
si l'id_connexion est en numérique, mais en fait à l'affichage je veux que ça m'affiche que les messages qui correspondent à l'id_connexion qui est "connecté" en ce moment.

C'est pour ça que je récupère l'id de la Session et que je le compare à celui de ma table.

Je suis pas sure d'être très claire...
Je vais essayer tes modifs!
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
Modifié par Thorak83 le 3/07/2013 à 15:53
je pense que cette partie donc ne sert à rien. La jointure est la pour cela
0