Champ: 'id_connexion' dans field list est ambigu
Résolu
caro__48
Messages postés
264
Statut
Membre
-
caro__48 Messages postés 264 Statut Membre -
caro__48 Messages postés 264 Statut Membre -
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
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
-
Bonjour,
alors pour la 1ère partie de la requête SQL je verrais ceciSELECT 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-
-
-
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
-
-
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!